Struts2会帮我们自动转换基本类型.文本自动转换到String,数字自动转化到int,long.....
而如果POJO是这样
private String name;
private String sex;
private int age;
前端输入你却这样:
你就会得到这个错误
这个错误的造成原因是:
我们继承了ActionSupport 他实现了ValidationAware接口,如果不实现ValidationAware就什么都不会发生.
从错误message中我们发现是 name="input"的result没有设置
so:
<action name="convert" class="com.IConvertAction">
<result>/convert.jsp</result>
<result name="input">/convert.jsp</result>
</action>
修改类型转换错误提示信息:
- 创建ActionClassName.properties
- invalid.fieldvalue.字段名(e.g:age)=你想要的错误信息
字段验证
我想让我的age字段不能为空!
ActionSupport已经实现了ValidationWare
所以我们只需要配置相应的xml
1.创建ActionClassName-validation.xml
我们可以模仿struts2\struts-2.2.1\apps\struts2-blank-2.2.1.war\WEB-INF\classes\example的Login-validation.xml
也可以参考\docs\WW\validation.html
2.我根据/docs/WW/int-validator.html 码了XML代码
<validators>
<field name="age">
<field-validator type="int">
<param name="min">20</param>
<param name="max">50</param>
<message key="err.int"></message>
</field-validator>
</field>
</validators>
这样就好了~
Struts2的好处慢慢体现出来了,我想为IConvertAction 提供类型转换错误提示信息的修改,字段验证等功能,根本就不会用到这个类,只用完成相应的XML,properties编写.大大的解耦
问题:
其实我只是想让age字段不能为空,当我把在查阅文档后把type设置为:required或requiredstring,发现都没用...无奈只能用回int~~
/**********2015-01-29 17:06:28****************/
利用注解不验证指定方法:
@SkipValidation
public String list(){
request.put("employees", empService.list());
return "list";
}