• validation


    17.1.Struts2验证(int验证器)

    原创作者: 饕尽天下   阅读:2412次   评论:0条   更新时间:2009-04-06    

    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代码  
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <!DOCTYPE struts PUBLIC  
    3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
    5.   
    6. <struts>  
    7.     <!-- Rose India Struts 2 Tutorials -->  
    8.     <constant name="struts.enable.DynamicMethodInvocation" value="false" />  
    9.     <constant name="struts.devMode" value="true" />  
    10.   
    11.     <package name="roseindia" namespace="/roseindia" extends="struts-default">  
    12.       
    13.     <!-- Add actions here -->  
    14.   
    15.     <!-- int validation -->  
    16.   
    17.         <action name="intValidation" class="net.roseindia.NumAction">  
    18.       <result name="input">/pages/intInputForm.jsp</result>  
    19.       <result name="error">/pages/intInputForm.jsp</result>  
    20.             <result>/pages/intSuccess.jsp</result>  
    21.         </action>  
    22.   
    23.          <!-- Add actions here -->  
    24.     </package>  
    25.   
    26.   
    27.     <!-- Add packages here -->  
    28.   
    29. </struts>   
    <?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

    Html代码  
    1. <%@ taglib prefix="s" uri="/struts-tags" %>  
    2.   
    3. <html>  
    4.   
    5. <head>  
    6. <title>Input form</title>  
    7.  <link href="<s:url value="/css/main.css"/>" rel="stylesheet"  
    8.           type="text/css"/>  
    9.       <s:head/>  
    10. </head>  
    11.   
    12. <body>  
    13.     
    14.   <s:form method="POST" action="intValidation">  
    15.    </td>  
    16.   </tr>  
    17.     <s:textfield label="Enter Number" name="userinput" />  
    18.     <s:submit />  
    19.   </s:form>  
    20.   
    21. </body>  
    22.   
    23. </html>   
    <%@ 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

     

    Java代码  
    1. package net.roseindia;  
    2. import com.opensymphony.xwork2.ActionSupport;  
    3.   
    4. public class NumAction extends ActionSupport{  
    5.     
    6.   private int userinput=0;  
    7.     
    8.   public String execute() throws Exception{  
    9.   
    10.   /*  if (getUserinput() >= 10 && getUserinput() <= 80){ 
    11.       return SUCCESS; 
    12.     } 
    13.     else{ 
    14.       return ERROR; 
    15.     }  
    16.      */  
    17. return SUCCESS;  
    18.   }  
    19.   
    20.   public void setUserinput(int userinput){  
    21.     this.userinput = userinput;  
    22.   }  
    23.   public int getUserinput(){  
    24.     return userinput;  
    25.   }  
    26. }   
    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文件中指定的信息(数值需要在10至80之间). int validator需要如下的参数 :

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

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

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

    NumAction-validation.xml

    Xml代码  
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE validators PUBLIC   
    3.       "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
    4.       "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
    5.         
    6. <validators>  
    7.   
    8.   <field name="userinput">  
    9.     <field-validator type="int">  
    10.       <param name="min">10</param>  
    11.       <param name="max">80</param>  
    12.       <message>Number needs to between ${min} and ${max} </message>  
    13.     </field-validator>  
    14.   </field>  
    15.   
    16. </validators>   
    <?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> 

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

    intSuccess.jsp

    Java代码  
    1. <%@page language="java" %>  
    2. <html>  
    3.   
    4. <head>  
    5.   <title>Correct entry</title>  
    6. </head>  
    7.   
    8. <body>  
    9. <b>Correct Input Number :</b><%=request.getParameter("userinput") %>  
    10. </body>  
    11.   
    12. </html>   
    <%@page language="java" %>
    <html>
    
    <head>
      <title>Correct entry</title>
    </head>
    
    <body>
    <b>Correct Input Number :</b><%=request.getParameter("userinput") %>
    </body>
    
    </html> 

     

    当你输入数字50

     

    那么你会得到 :

  • 相关阅读:
    八、UIViewController们之间的协作——Segue
    七、UIViewController导航栏
    六、APP开发的主角——UIViewController
    五、UI开发之核心基础——约束(深入)
    四、UI开发之核心基础——约束(实用)
    三、UI开发之核心基础——约束(入门)
    iOS开发笔记错误集
    Unity中内嵌网页插件UniWebView使用总结
    利用Aspose.Word控件实现Word文档的操作
    ReSharper 配置及用法(ZHUANG)
  • 原文地址:https://www.cnblogs.com/lucky_dai/p/2008063.html
Copyright © 2020-2023  润新知