上面这一段,就是在validation.xml文件中描述了validwhen的使用方法。判断password1和password2这两个域的值是否相等。*this* 代表了当前域,password1代表了上面的那个域。msg描述了错误信息。arg描述了在错误信息中使用的两个参数。
再说一下在Struts中如何使用正则表达式来验证数据吧。它可以把正则表达式的灵活性充分的发挥在validator框架中,所以它会经常被使用到。在validator框架中是通过mask验证规则来实现正则表达式的判断的。
在上面的配置中,通过mask变量来执行验证时所使用的正则表达式。关于正则表达式的规则在此不做解释,读者可以自己寻找一些相关文章了解。在上面的这个例子中,我们定义了一个规则就是,值必须是整数且长度是15位或18位。还有一点需要注意的是,如果没有定义msg,也就是错误信息,那么将会使用mask规则默认的错误提示信息。
最后来说一下如何自定义验证规则吧。
首先需要自定义一个类,在这个类中定义一个静态的返回布尔值的方法,这个方法的作用是提供验证规则的业务逻辑。
在这个方法中,参数是可以根据你的需要来定义的。其中
Field代表的是validation.xml文件中的<field>标记
HttpServletRequest表示请求
ActionMessages表示错误信息的集合
Resources表示资源文件
在这里我们是从请求里面取 密码1 的值,从被验证的字段里取密码2,然后比较两个字段的值。如果不一样就想错误信息的集合里添加错误信息。错误信息又是从资源文件中去取的。
这里可以有许多的类供我们使用的,例如:GenericTypeValidator和GenericValidator,他们提供了许多现成的验证方法。
然后就需要在validator-rules.xml文件中部署这个验证类了。
其中methodParams指定了方法的参数,它必须和我们定义的方法中指定的参数相同,位子也必须一样。name指定了该验证规则的名字,classname指定了验证类所在的包,msg指定了错误信息,method指定了该验证规则使用的哪一个验证方法。
然后我们就可以在validation.xml文件中使用该验证规则了。