struts2跳转后总是会返回input

遇到一奇葩问题,Action在设置为prototype的情况下,竟然还是跳转到input视图,原因是我验证时候字输入错误

对这个问题,有人说struts2的验证很恶心,事实上还是蛮好用的。

在各种配置正确的情况下,加上<bean id="regAction" class="cn.love.action.UserRegAction" scope="prototype" >就可以了。

这篇文章主要说一下我对input,validate()验证的体会。

<package name="user" namespace="/jsp" extends="struts-default">
    <action name="reg"  class="regAction" method="execute">
       <result name="success">/jsp/user_login.jsp</result>
       <result name="error">/jsp/user_reg.jsp</result>
       <result name="input">/jsp/input.jsp</result>    <!--<result name="input">/jsp/user_reg.jsp</result>-->

  </action>
 </package>

当验证出错时,如果配置为/jsp/input.jsp,则显示对应页面的字符串(不会显示验证字符串:"如xxx没有填写")

只有到对应的验证页面/jsp/user_reg.jsp时候,才会输出

所以:struts2页面请求action的时候,会先validate()验证,有错则跳转到input,否则该干嘛干嘛。

我出现这个问题的时候是因为

原本我写的是if(getId()==null || "".equals(this.getUserid().trim())){.....

而我User类没有id属性,只有userid属性,我说这个,是想说,只要配置正确,字段属性没有导致validate()方法出错,就能正常。

需要注意的:1.设置prototype属性

       2.检查validate()方法是否正确

      3.页面提交的action路径对了吗,struts.xml配置是否正确

原文地址:https://www.cnblogs.com/xiaoliu66007/p/3083470.html