struts2注册xml验证

使用xml文件完成属性的验证

  一共有六个字段(也就是表单的六个属性).分别是 username ,password ,repassword ,age,birthday,graduation ..要求是 每个属性不能为空,前面三个必须在6到10个字符之间.年龄在1到150之间.birthday 为2001-01-01到2003-12-31之间,graduation在2005-01-01与2007-12-31之间..这些就是我们这节要实现的需求..

  当然,还有其他需求,比如password与repassword必须相等,还有bithday必须在graduation之前.

  配置xml文件.放在action 对应的包里面 包名是ActionName-validation.xml

  这里的规则是 "-validation.xml"部分固定...前面加上action类的类名...

  比如这里就是RegisterAction-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="username">

  <field-validator type="requiredstring"> //表示输入字符串类型的要求 这里是空值的验证

  <param name="trim">true</param>//表示去空格为真.就是所有的字符串都要经过去字符串.这条默认,可以不写

  <message>username should not be blank!</message>//如果验证失败,显示的信息

  </field-validator>

  <field-validator type="stringlength">//表示字符串长度验证

  <param >6</param>

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

  <message>username should be between ${minLength} and ${maxLength}</message>

  </field-validator>

  </field>

  <field name="password">

  <field-validator type="requiredstring">

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

  </field-validator>

  <field-validator type="stringlength">

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

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

  <message>password should be between ${minLength} and ${maxLength}</message>//注意这里可以用${}

  </field-validator>

  </field>

  <field >

  <field-validator type="requiredstring">

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

  </field-validator>

  <field-validator type="stringlength">

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

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

  <message>repassword should be between ${minLength} and ${maxLength}</message>

  </field-validator>

  </field>

  <field name="age">

  <field-validator type="required">//注意,这里不是requiredstring.因为age不是字符串类型..其他类型都用required

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

  </field-validator>

  <field-validator type="int">//同理,这里用 int

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

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

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

  </field-validator>

  </field>

  <field name="birthday">

  <field-validator type="required">

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

  </field-validator>

  <field-validator type="date">

  <param name="min">2001-01-01</param>

  <param name="max">2003-12-31</param>

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

  </field-validator>

  </field>

  <field name="graduation">

  <field-validator type="required">

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

  </field-validator>

  <field-validator type="date">

  <param name="min">2005-01-01</param>

  <param name="max">2007-12-31</param>

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

  </field-validator>

  </field>

  </validators>

  注意,显示错误信息可以有addFieldError方法,还有addActionError方法.我们之前说的都是前面那个...这两个方法都会返回一个input 消息提示验证失败.区别在于,在<s:form>标签内只能显示addFieldError的错误信息.也就是说,如果你的validate方法里面是写addActionError 那么,只使用<s:form>将不显示错误信息.这个时候,我们就必须在JSP页面里面添加 <s:actionerror>标签..这样就会显示addActionError 里面的错误信息..

  配置文件的方法来验证返回的是addFieldError方法.也就是说,你可以在页面上加 <s:fielderror>标签,或者使用<s:form>标签.

  上面说的xml验证叫做属性验证..他用<field>标签对应需要的验证的属性..还有一种是非属性验证..他对应的是验证的方式.比如,我要验证<stringlength>.然后再子标签里说明需要验证哪几个属性.这种办法和属性验证是一样的.不多说了.估计我是不想用了.因为对于业务逻辑来说不清晰.

  还有一点.和之前实现validate方法是一样的,我这个xml文件是对于那个action来说是全局的.也就是说我调用那个action里的每一个方法都需要经过这个验证.很明显,这样也是不合理的.所以,struts里面你可以定义一个局部的xml文件来验证,你可以定义这样一个文件

  RegisterAction-test-validation.xml 其中.test表示,只有在调用RegisterAction里的test方法的时候才会调用这个xml文件进行验证..这个xml文件里面的写法和上面的一样.不多说了

  如果全局验证的和局部验证的都存在.那么两个都执行..顺序是先全局的,后局部的.和之前的validate也是一样的

猜你喜欢

转载自xue-zhang.iteye.com/blog/1084710