原创作者: 饕尽天下   阅读:7882次   评论:0条   更新时间:2011-06-01    

Struts2 提供了一个内置的验证功能来校验用户输入的信息。这些功能足够适用于一般的web应用程序。但在某些情况下,这些标准的验证功能不足以验证复杂的业务逻辑。为了验证复杂的业务逻辑,struts2校验框架可以通过扩展来创建自定义的验证功能。

本章论述struts2中所有可用的验证功能。之后的章节将通过例子来论述这些验证功能。

验证规则 :

验证规则是struts2程序的一个主要部分,包含了对用户的特殊输入验证。Struts2验证框架使用默认的验证规则对用户的输入进行验证。

验证规则可指定为 :

1.      每个Action : Action的名字-validation.xml

2.      每个Action : Action的名字-alias-validation.xml

3.      继承的层次结构和接口由Action类来实现。Xwork搜索Action的继承树来查找Action的父类和实现的接口的默认验证。

4.      使用Java5 的注释。

Struts2默认的验证功能 :

下面的字段验证是struts2验证框架的一部分 :

1.      数据转换验证器

2.      Date类型验证器

3.      Double类型验证器

4.      Email格式验证器

5.      表达式验证器

6.      字段表达式验证器

7.      Int类型验证器

8.      正则表达式验证器

9.      Required类型验证器

10.  Requiredstring类型验证器

11.  Stringlength验证器

12.  URL验证器

13.  Visitor验证器

使用struts2 int 验证器

下面的例子论述了如何使用Int Validator来验证用户输入的integer类型的数据

这就是创建Int validator的步骤 :
第一步 : 创建xml文件并将下面的xml代码添加到struts.xml文件中去。
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <!-- Rose India Struts 2 Tutorials -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="roseindia" namespace="/roseindia" extends="struts-default">
    
    <!-- Add actions here -->

    <!-- int validation -->

        <action name="intValidation" class="net.roseindia.NumAction">
      <result name="input">/pages/intInputForm.jsp</result>
      <result name="error">/pages/intInputForm.jsp</result>
            <result>/pages/intSuccess.jsp</result>
        </action>

         <!-- Add actions here -->
    </package>


    <!-- Add packages here -->

</struts> 

第二步 : 创建输入表单
intInputForm.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

<head>
<title>Input form</title>
 <link href="<s:url value="/css/main.css"/>" rel="stylesheet"
          type="text/css"/>
      <s:head/>
</head>

<body>
  
  <s:form method="POST" action="intValidation">
   </td>
  </tr>
    <s:textfield label="Enter Number" name="userinput" />
    <s:submit />
  </s:form>

</body>

</html> 

第三步 : 创建Action

NumAction.java

 

package net.roseindia;
import com.opensymphony.xwork2.ActionSupport;

public class NumAction extends ActionSupport{
  
  private int userinput=0;
  
  public String execute() throws Exception{

  /*  if (getUserinput() >= 10 && getUserinput() <= 80){
      return SUCCESS;
    }
    else{
      return ERROR;
    } 
     */
return SUCCESS;
  }

  public void setUserinput(int userinput){
    this.userinput = userinput;
  }
  public int getUserinput(){
    return userinput;
  }
} 

第四步 : 创建验证

验证文件的格式应该是<Action类的名字>-validation.xml or <Action类的名字>-<ActionAliasName>-validation.xml.

编写验证规则 :
下面的验证文件定义了验证输入范围的规则.int Field Validator检查一个给定的整数是否在指定的范围内.如果该整数在指定的范围内,你将跳转至intSuccess.jsp.否则将显示xml文件中指定的信息(数值需要在1080之间). int validator需要如下的参数 :

l        fieldName : 需要校验的字段名.如果使用Plain-Validator语法则是必须的,否则不是.

l        min : 输入数据的最小值.(如果没有指定,则不会检查)

l        max : 输入数据的最大值.( 如果没有指定,则不会检查)

NumAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
      "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
      "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
      
<validators>

  <field name="userinput">
    <field-validator type="int">
      <param name="min">10</param>
      <param name="max">80</param>
      <message>Number needs to between ${min} and ${max} </message>
    </field-validator>
  </field>

</validators> 

如果给定的数值在1080之间,那么intSuccess.jsp页面将显示输入的数字和"Correct Input Number"信息

intSuccess.jsp

<%@page language="java" %>
<html>

<head>
  <title>Correct entry</title>
</head>

<body>
<b>Correct Input Number :</b><%=request.getParameter("userinput") %>
</body>

</html> 

输出 :

当运行该程序的时候你将得到如下页面 :

当你输入错误的数据或者文本的时候你将得到 :

当你输入数字50

那么你会得到 :

  • 大小: 10 KB
  • 大小: 8.5 KB
  • 大小: 8.3 KB
  • 大小: 5.6 KB
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics