在struts2中可以实现对Action的所有方法进行校验或者对Action的指定方法进行校验。struts2提供了两种实现方法。
1.采用手工编写代码实现。2.基于XML配置的方式是实现。
UserValidationAction
User 实体
UserValidationAction 在xml中的配置
登录页面login.jsp
输出页面message.jsp
1.1手工编写代码实现对Action中所有方法进行输入校验
通过继承ActionSupport重写validate()方法实现输入校验,当某个数据校验失败时,调用addFieldError()方法实现往系统的filedErrors添加校验失败信息,在校验不通过时会转发到该Action在struts.xml中配置的input视图,在input视图通过struts2的标签<s:fielderror/>输出错误信息。
在UserValidationAction中添加下面代码
1.2手工编写实现对Action中指定方法进行输入校验
通过继承ActionSupport重写validateXxx()方法实现输入校验,validateXxx()只校验Action中方法名为xxx的方法,当某个数据校验失败时,调用addFieldError()方法实现往系统的filedErrors添 加校验失败信息,在校验不通过时会转发到该Action在struts.xml中配置的input视图,在input视图通过struts2的标签<s:fielderror/>输出错误信息
在UserValidationAction中添加下面代码
2.1基于XML配置方式实现对Action的所有方法进行输入校验
基于XML方式也需要继承ActionSupport,并提供校验文件,校验文件和Action类放在一个包下,文件的取名格式为:ActionClassName-validation.xml,ActionClassName为Action的简单类名,-validation为固定写法。上面的UserValidationAction对应的校验文件名为UserValidationAction-validation.xml。
UserValidationAction-validation.xml代码如下
<fileld>指定Action中要校验的属性,<field-vlidator>指定校验器,上面的requiredstring,email是系统提供的,系统中提供了能满足大部分校验需求的校验器,xwork-core-2.x.jar中的com.opensymphony.xwork2.validator.validators下的default.xml中定义了这些校验器。
<meessage>为校验失败后的提示信息,如果需要国际化,可以为message指定key属性,key的值为资源文件中的key。
2.2基于XML配置方式实现对Action的指定方法进行输入校验
只需要对Action中的某个Action方法进行校验,校验文件的取名为ActionClassName-ActionName-validation.xml。ActionName是
Action在struts.xml中的name属性值。
上面的UserValidationAction对应的校验文件名为UserValidationAction-test_update-validation.xml
UserValidationAction-test_update-validation.xml代码和UserValidationAction-validation.xml相同。
HTTP Status 404 -No result defined for action 错误:
原因:Action中的属性值为空的时候,Struts2的默认拦截器会报错,但是又找不到input的Result,不能够把错误返回,所以报这种错误。
解决方法:
1,在页面中给空值赋默认值。
2,重新定义一个Action,去掉空值的成员变量。
3,添加input的Result,并在这个页面给出提示<s:fielderror/>