struts2 验证框架

来源:互联网 发布:浦口行知基地气温 编辑:程序博客网 时间:2024/06/05 01:56

验证框架:

Validate

第一种方式:继承actionsupport类重写validate()方法:表示提交到此action所有请求都会执行验证。

Eg:

publicclassLoginAction extends ActionSupport{

    private Stringname;

    private Stringpass;

    public String testognl()throws Exception {

       System.out.println("login");

       System.out.println(name+":"+pass);

       return"success";

    }

    public String execute(){

       System.out.println("execute");

       System.out.println(name+":"+pass);

       return"success";

    }

    @Override

    publicvoid validate() {

       if(!(name!=null&&name.length()>0)){

           this.addFieldError("nameempty","name isempty");

       }

       if(!(pass!=null&&pass.length()>0)){

           this.addFieldError("passempty","pass isempty");

       }

}

}

 

修改struts.xml 文件

    <actionname="login"class="com.etc.web.LoginAction">

       <result>/pages/login-success.jsp</result>

       <resultname="input">/index.jsp</result><!--有验证时必须加上此result -->

       <resultname="error">/pages/login-error.jsp</result>

</action>

页面:

<s:formaction="login"namespace="/">

        <s:textfieldname="name"label="姓名" />

        <s:fielderrorcssStyle="color:red;"fieldName="nameempty"/><br>

        <hr>

        <s:textfieldname="pass"label="密码"/>

         <s:fielderrorcssStyle="color:red;"fieldName="passempty"/>

        <s:submit/>

    </s:form>

第二种:单独为某个方法添加验证(validate+大写首字母的方法名称),页面和struts.xml和第一种方式一致。

Eg

publicclassLoginAction extends ActionSupport{

    private Stringname;

    private Stringpass;

    public String testognl()throws Exception {

       System.out.println("login");

       System.out.println(name+":"+pass);

       return"success";

    }

    public String execute(){

       System.out.println("execute");

       System.out.println(name+":"+pass);

       return"success";

    }

    publicvoid validateTestognl() {

    if(!(name!=null&&name.length()>0)){

       this.addFieldError("nameempty","name isempty");

    }

    if(!(pass!=null&&pass.length()>0)){

       this.addFieldError("passempty","pass isempty");

    }

}

}


Validation:

第一种:新建一个xml文件,名称:action类名-validation.xml:xml文件必须和action类在同一个目录下,提交到此action所有请求都会执行验证。

Eg:

<!DOCTYPEvalidators PUBLIC

       "-//Apache Struts//XWork Validator1.0.2//EN"

       "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

<validators>

    <fieldname="name">

        <field-validatortype="requiredstring">

            <message>姓名不能为空</message>

        </field-validator>

    </field>

    <fieldname="name">

        <field-validatortype="stringlength">

        <paramname="trim">true</param>

            <paramname="minLength">3</param>

            <paramname="maxLength">8</param>

            <message>姓名必须为3-8位的字符</message>

        </field-validator>

    </field>

    <fieldname="pass">

    <field-validatortype="requiredstring">

        <message>必须输入密码</message>

    </field-validator>

    </field>

</validators>

 

Struts.xml文件的action配置中必须具备 name=”input”这样的一个结果。

 

第二种方式:

新建一个xml文件,名称:action类名-action单个请求方法的别名-validation.xml:xml文件必须和action类在同一个目录下,提交到此action所有请求都会执行验证。

Struts.xml

<actionname="login1"class="com.etc.web.LoginAction"method="testognl">

       <result>/pages/login-success.jsp</result>

       <resultname="input">/index.jsp</result>

       <resultname="error">/pages/login-error.jsp</result>

    </action>

Xml命名:LoginAction-login1-validation.xml:表示执行LoginActiontestognl方法时执行验证。