需求:
我的每个jsp页面都是通过Action进入的,这样可以通过Action的editUI方法在request中存放一些数据,在jsp页面展示;
我希望使用struts2的校验框架在编辑页面提交出错后能显示出错信息,且返回至编辑页面时也必须先经过Action <action name="editUI" type="EditAction" method="editUI">
<result name="editUI">/WEB-INF/pages/edit.jsp</result>
<result name="input">/WEB-INF/pages/other.jsp</result>
<action> <action name="edit" type="EditAction" method="edit">
<result name="input" type="chain">editUI</result>
<action> 这样的配置后提交至edit这个action时,如果出错了,它会进入editUI这个Action的input视图,而不是执行EditAction的editUI方法;
这个问题的根本在于如何配置edit这个action的input视图,让它先经过editUI这个Action,即执行EditAction的editUI方法,再经过jsp页面;网上已经有很多人碰到这样的问题,但是都没有答案,希望各位大侠帮忙解决,多谢!
我的每个jsp页面都是通过Action进入的,这样可以通过Action的editUI方法在request中存放一些数据,在jsp页面展示;
我希望使用struts2的校验框架在编辑页面提交出错后能显示出错信息,且返回至编辑页面时也必须先经过Action <action name="editUI" type="EditAction" method="editUI">
<result name="editUI">/WEB-INF/pages/edit.jsp</result>
<result name="input">/WEB-INF/pages/other.jsp</result>
<action> <action name="edit" type="EditAction" method="edit">
<result name="input" type="chain">editUI</result>
<action> 这样的配置后提交至edit这个action时,如果出错了,它会进入editUI这个Action的input视图,而不是执行EditAction的editUI方法;
这个问题的根本在于如何配置edit这个action的input视图,让它先经过editUI这个Action,即执行EditAction的editUI方法,再经过jsp页面;网上已经有很多人碰到这样的问题,但是都没有答案,希望各位大侠帮忙解决,多谢!
errormessage添加错误消息
<s:error/>显示错误消息
楼主你把问题复杂化了,你把在出错的时候,你把用户的数据放在出错页面的请求中,在由出错页面通过请求Action顺便把数据带回到编辑页面就可以了。
总体想法是,你只要把用户的数据在带在请求中,按正常跳转执行就可以了。
<result name="editUI">/WEB-INF/pages/edit.jsp </result>
<result name="input">/WEB-INF/pages/other.jsp </result>
<action>跟你这样讲吧. 把你想到 other.jsp 显示的数据放在 validateEditUI() 方法中去查询对 struts 2 的流程熟悉一点吧. 拜托! LS 的各位...像上面的 editUI 请求,其执行顺序是: validateEditUI --> validate (此方法执行完后检查 filederror 或 actionerror 中是否有值,有则直接回到 input 视图不再向下执行)--> editUI --> execute敬告 LZ ,要养成写 validate 方法的习惯. 哪怕什么校验都不做,写个空方法都行父类 actionsupport 的 validate 和 execute 不要重写,把配置文件中定义的 method 都写上
如上例中的 editUI 和 validateEditUI还有,遇到问题自己多想想. 拿到 csdn 上来问,还不如自己想到的方法更透彻
http://topic.csdn.net/u/20090908/15/32830894-e841-4353-9ef3-b021b69bf120.htmlLZ 可以自己想想这个流程嘛:用 chain 传递过来的值, 在后面的 请求中执行完 validate 后,fielderror 被取到
此时不再执行 editUI 而直接跳到 input 视图.所以,把值放在什么地方查询,成了关键...
这些天看到一些用 struts2 的人,任意时间任意空间都 带着 struts1 的思维方式就头疼csdn 确实让人挺失望的...
我错了。
另外还有个问题,如果这个查询是带参数的,而这个参数是执行上个action用到的,那该怎么处理?
我的解决方式是:把这个参数一直写在表单的<hidden:>里。一个页面一个页面的往下传。有点傻的办法。你说的方法我没太看懂,麻烦说得再详细点。有关键代码最好。