struts2中验证也是两种validate方法和框架,validate方法没什么太多好说的,和struts1中基本是一样的,不同是的在验证一个表单多个提交按钮的时候,每个按钮是对应了自己的一个方法的,假设其中一个方法为add(),则在Action中书写的针对该按钮的验证方法为validateAdd(),他可以和公用的validate方法共存,执行顺序是validateAdd、validate。。。
使用验证框架的时候只需要写一个XML文件就对了``很HIGH皮~但是文件名字不能乱写,XXXXAction-validation.xml,XXXX为Action的名字,该文件放在Action的同级目录下。
XML文件的根节点为validators,他有两种类型的子节点:validator和field,这两种其实没什么本质的区别,validator在书写的时候是先写验证规则,然后将拥有这种验证规则的字段加进去;field是先写字段名字,然后将该字段拥有的验证规则写进去,我们只需要掌握一种就对了,这里按习惯我选了field。。
以验证密码来说明一下:
<field name="rePassword">
<field-validator type="requiredstring" short-circuit="true">
<message>密码不能为空</message>
</field-validator>
<field-validator type="stringlength" short-circuit="true">
<param name="minLength">5</param>
<param name="maxLength">10</param>
<message>密码只能在5-10之间</message>
</field-validator>
<field-validator type="fieldexpression_r">
<param name="expression_r">(password == rePassword)</param>
<message>密码必须相等</message>
</field-validator>
</field>
很明显,<field name="rePassword">中name就是字段的名字,每个field-validator就是一个验证规则,type是规则的类型,short-circuit为true表示该规则一旦没通过就不继续验证后面的规则了,<message>是错误的信息。
有些验证规则我们需要填写param ,这个填什么具体得自己去看他的底层实现类,就不多说了,然后我们看到在最后一个验证规则里面有一个表达式,本例中是判断两次输入的密码是否相等,这个规则是我们根据业务自己写的,struts2给我们两种验证规则自己实现,一种就是上面的fieldexpression_r,还有一种是expression_r