我们在配置文件中指定了method其实和验证没什么关系,比如我们指定method="save"
<action name="saveUser" class="saveUserAction" method="save">
<result name="success" type="redirect">listUser!list.action</result>
<result name="input">/save.jsp</result>
</action>
saveUserAction 里面有方法
public String save() throws Exception {
this.service.saveUser(user);
return SUCCESS;
}
然后我们验证文件配置成UserAction-save-validation.xml。这样struts验证是不会成功的。
因为验证跟本就跟method指定的方法和action里面的方法名无关,而是和struts.xml里面的name指定的名字有关,
如果我们的配置文件这样命名:UserAction-aveUser-validation.xml 那么才能验证成功
UserAction-aveUser-validation.xml :
<validators>
<field name="user.age">
<field-validator type="required">
<message>required age</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>age should be between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
防止验证出现多行重复性提示,scope定义为prototype使struts2的action不使用单例模式
<bean id="saveUserAction" class="com.yu.useraction.saveUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>
所有在spring里面的action都需要配置scope="prototype"不能使用默认
如果oracle数据库 把age的Long类型都改成Interger类型(user.java和user.hbm.xml),否者验证时会不能通过