在struts2中我们可以对action中的所有方法进行校验,也可以对action中某个指定的方法进行校验。
对于输入校验,struts2提供了两种实现方法
1.采用手工编写代码实现
2.基于xml配置方式实现
具体的实现如下:
1.如果是校验action中的所有方法,则需要继承ActionSupport这个类,并且需要重写里面的validate()这个方法,
在validate()方法里做具体的验证,比如验证手机号:mobilephone;
需要在action里做如下处理:
if(mobilephone==null||"".equals(mobilephone.trim())){
this.addFieldError("手机号码不能为空",mobilephone);
}
else if(!Pattern.compile("^1[358]//d{9}$").matcher(mobilephone).matches()){
this.addFieldError("手机号格式不对",mobilephone);
}
然后在struts.xml中配置一个<result name="input">index.jsp</result>
最后从index.jsp页面中通过<s:fielderror/>输出相关的错误信息
前面需要加入struts标签<%@ taglib uri="struts-tags" prefix="s"%》
如果只需要验证action中某个指定的方法,eg:save方法
则:只需要validateSave就好了。。。也就是说validate+具体的需要验证的方法
2采用xml配置方法实现(推荐)
首先要在action类的同一个包下写对应的配置文件,且名字必须为:ActionClassName-validation.xml,当然action还是要去继承ActionSupport这个类,然后再对应的配置文件中写对应的属性的验证器:
eg"
<validators>
<field name="username">
<field-validator type="requiredstring">
<message>用户名不能为空</message>
</field-validator>
</field>
<field name="mobilephone">
<field-validator type="requiredstring">
<message>电话号码不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[^1[358]/d{9}$]]></param>
<message>电话号码格式不对</message>
</field-validator>
</field>
</validators>
值得注意的一点是:要在xml中写相应的文本必须要:<![CDATA[]]>的格式。。。
如果是对action中具体的某个方法进行校验:
则命名为:ActionClassName-ActionName-validation.xml