首先新建一个.xml文件
放在要验证的action类同级目录下。例如要验证UserAction类。则新建一个UserAction-validation.xml文件。在这里面编写验证框架。
有两种编写方式:
1. <validator type="requiredstring">
<!-- 一个里面写一个验证,不建议用这个,不利于将来的维护。 -->
<param name="filedname">username</param><!--要验证的用户名-->
<message>用户名不能为空</message>
</validator>
2.<!-- 建议用这个验证编写 方式。一个属性里可以有多个验证器 -->
<field name="user.username">
<field-validator type="requiredstring">
<message>登陆的用户名不能为空</message>
</field-validator>
<field-validator type="regex"><!-- 正则表达式验证 -->
<param name="expression">^[a-zA-Z][a-zA-Z0-9]{3,14}$</param>
<message>登陆的用户名必须以字母开头,字母和数字下划线,4到14位组成</message>
</field-validator>
</field>
3.如果要对一个类中的多个方法进行验证并将其分开写?该怎么办呢?例如一个userAction类中有两个方法.login方法和register方法,在当前action类中新建一个文件:userAction-login-validation.xml,userAction-login-validation.xml,在这两个文件里写验证代码。
注意这里的login和register方法并不是你的方法名。而是指的你的struts.xml文件中的action=“login” 或action="register" 这两个名字
4.又如果你要进行代码复用。就是两个方法有相同的验证,该怎么办呢?这时。你可以把验证的对象由属性改为对象。在你的实体类中新建一个文件。如你有一个user类。要对其验证用户名,密码,年龄。其中你的login方法和register方法是都要验证用户名和密码。可以在你的实体类的同级目录下新建一个文件user-validation.xml文件。在里面写公共的验证代码,然后再不同的方法的文件中写下如下代码:
<field name="user">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
其中name="user",必须是你的userAction类中的属性。并提供getter,setter方法。
就可以进行复用了。最后一点要主意的是:在login.jsp页面和register.jsp页面中要添加<s:fielderror/>因为他返回的是一个属性级别的。