我们在配置文件中指定了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),否者验证时会不能通过