遇到一奇葩问题,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配置是否正确