strust2校验框架练习

strust2提供了强大的校验框架。而strust2也可以分为客户端校验和服务器端校验。

1、  客户端校验。

客户端的校验也是依赖于服务器端的校验的,想要执行客户端校验,首先还是把服务器端的校验文件配置好。然后在在jsp页面的form中不能有自己的主题设置(theme),而且还要加一个属性validate="true"。才能执行客户端校验。但是客户端校验很弱。一般采用的是服务器端校验

2、  服务器端校验。

想要执行服务器端的校验,那么就要首先配置好校验文件。配置文件的位置与jsp页面的form的提交到的那个action类的同一包体下面。而且名字也是要一定的规范。比如说action名称为LoginAction,那么校验文件为:LoginAction-validation.xml。而这样写默认是在action中执行execute()方法的时候执行校验,但是如果你想执行在自己写的方法中去校验的话,那么就这么写LoginAction-login-validation.xml意思是在LoginAction类中执行login方法的时候,就会执行校验,但是如果此时你还存在LoginAction-validation.xml的话,那么LoginAction-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">

校验的内容参照为:

Xwork包下的com.opensymphony.xwork2下的validator/valudators中的default.xml

下面以登陆为例子:

regiest.jsp

 

                  <s:fielderror cssStyle="color:red"/>

                    <!—校验错误的展现,默认的fielderror级别的错误-à

 

LoginAction

 

 

public class LoginAction extends ActionSupport{

 

    private int uid;

    private String uname;

    private String sex;

    private int age;

    private String email;

    private Date birthday;

    private String phone;

    public LoginAction() {

    }

    @Override

    public String execute() throws Exception {

       return this.SUCCESS;

    }

    @Override

    public void validate() {

    }......set和get方法略

   }

LoginAction-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>

    <!-- uid的校验 -->

    <field name="uid">

       <field-validator type="required"><!-- 必填的 -->

           <message>uid should be required!</message>

       </field-validator>

       <field-validator type="int">

           <param name="max">10000</param>

           <param name="min">1</param>

           <message>uid should be between ${min} and ${max}</message>

       </field-validator>

    </field>

    <!-- uname的校验 -->

    <field name="uname">

       <field-validator type="requiredstring"><!-- 必填的字符串 -->

    <!--<param name="trim">true</param> 去掉空格,可以省略,默认为true -->

           <message>uname should not be blank!</message>

       </field-validator>

        <field-validator type="stringlength">

                  <param name="maxLength">10</param>

                  <param name="minLength">6</param>

                  <message>

                  uname should be between ${minLength} and ${maxLength}

                  </message>

       </field-validator>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

</field>

    <!-- sex的校验 -->

    <field name="sex">

       <field-validator type="requiredstring">

           <message>sex should should be required!</message>

       </field-validator>

    </field>

    <!-- age的校验 -->

    <field name="age">

       <field-validator type="int">

           <param name="max">11</param>

           <param name="min">80</param>

           <message>age should be between</message>

       </field-validator>

    </field>

    <!-- birthday的校验 -->

    <field name="birthday">

       <field-validator type="required"><!-- 必填的 -->

           <message>birthday should not be blank!</message>

       </field-validator>

       <field-validator type="date">

           <param name="max">2009-1-1</param>

           <param name="min">1980-1-1</param>

           <message>

              birthday should be between ${min} and ${max}

           </message>

       </field-validator>

    </field>

    <!-- email的校验 -->

    <field name="email">

       <field-validator type="requiredstring"><!-- 必填的字符串 -->

           <message>email should not be blank!</message>

       </field-validator>

       <field-validator type="email">

           <message>email is error!</message>

       </field-validator>

    </field>

    <field name="phone">

       <field-validator type="requiredstring"><!-- 必填的字符串 -->

           <message>phone should not be blank!</message>

       </field-validator>

       <field-validator type="regex"><!—正则表达式-à

           <param name="expression">

^\(?(\d{3,4})\)?[-| ]?(\d{3,4})[-| ]?(\d{4})$

</param>

           <message>phone is invalid!</message>

       </field-validator>

    </field>

</validators>

注意在jsp页面<s:fielderror cssStyle="color:red"/>取出现校验错误的值。

如果在LoginAction中的valdate方法中还定义的一个名称相同,但是值不同的错误。

比如说

    public void validate() {

       this.addFieldError("uname", "uname is error");

    }

而如果在提交的时候校验uname真的出错,在jsp页面用<s:fielderror/>站下错误的时候。

uname的错误信息会得到两条(在校验文件如果对一个属性定义多个校验的时候。当校验到出错时,就不会再往下对该属性进行校验)。"uname is error"也是会被展现出来的。比校验文件的错误信息后展现。

现在对fielderror进行解析:fielderror其实是LinkHashMap。键为String类型的,而值为ArrayList类型的

消息资源国际化:

LoginAction.properties配置文件中,是专门对应的LoginAction类的,在同一个包体下。

uid.invalid=\u7528\u6237\u7f16\u53f7\u51fa\u9519 \u7f16\u53f7\u5fc5\u987b\u5728 ${min} \u548c ${max}\u4e4b\u95f4

这里只写了一个。

因而得到在LoginValidate.xml配置文件中就改为:

<field name="uid">

       <field-validator type="required"><!-- 必填的 -->

           <message>uid should be required!</message>

       </field-validator>

       <field-validator type="int">

           <param name="max">10000</param>

           <param name="min">1</param>

           <message key="uid.invalid">

           </message>

       </field-validator>

</field>

。。。。。。校验框架先实现到这。。。。。。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值