struts2的input跳转到Action

jacky_zuo 2009-10-29 09:01:54
需求:
我的每个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页面;

网上已经有很多人碰到这样的问题,但是都没有答案,希望各位大侠帮忙解决,多谢!
...全文
1626 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Y253436767 2011-07-02
  • 打赏
  • 举报
回复
你用到上传了?
jhengly 2011-04-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yjailj 的回复:]
看到 LS 的留言我挺郁闷的, 越帮越忙 ...

<action name="editUI" type="EditAction" method="editUI">
<result name="editUI">/WEB-INF/pages/edit.jsp </result>
<result name="input">/WEB-INF/pages/other.jsp </resul……
[/Quote]
其实按你的方式也可以不把查询写在validateXxx里啊,因为在execute()方法中也可以根据一个ifelse判断直接手动返回success或input的,在返回之前做查询效果是一样的吧?只是一个编程规范而已。而且这个查询应该是上个action做的事,这样难道是又把上个action的代码复制过来?
另外还有个问题,如果这个查询是带参数的,而这个参数是执行上个action用到的,那该怎么处理?
我的解决方式是:把这个参数一直写在表单的<hidden:>里。一个页面一个页面的往下传。有点傻的办法。

你说的方法我没太看懂,麻烦说得再详细点。有关键代码最好。
xler2008 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yjailj 的回复:]
我在此链接中也回答过相同问题:
http://topic.csdn.net/u/20090908/15/32830894-e841-4353-9ef3-b021b69bf120.html

LZ 可以自己想想这个流程嘛:

用 chain 传递过来的值, 在后面的 请求中执行完 validate 后,fielderror 被取到
此时不再执行 editUI 而直接跳到 input 视图.所以,把值放在什么地方查询,成了关键...


这些天看到一些用 struts2 的人,任意时间任意空间都 带着 struts1 的思维方式就头疼

csdn 确实让人挺失望的...
[/Quote]


正是我需要的,只是听说chain不提倡用,会引起参数混乱,有没有更优美的方法呢
yulu0214 2009-11-02
  • 打赏
  • 举报
回复
说白了,就是validate后如果有fieldError或actionError,它就会转向input,并且type为dispather。
我错了。。。。
幸福的小雨 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yjailj 的回复:]
看到 LS 的留言我挺郁闷的, 越帮越忙 ...

<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>

跟你这样讲吧. 把你想到 other.jsp 显示的数据放在 validateEditUI() 方法中去查询

对 struts 2 的流程熟悉一点吧. 拜托! LS 的各位...

像上面的 editUI 请求,其执行顺序是:  validateEditUI --> validate (此方法执行完后检查 filederror 或 actionerror 中是否有值,有则直接回到 input 视图不再向下执行)--> editUI --> execute

敬告 LZ ,要养成写 validate 方法的习惯. 哪怕什么校验都不做,写个空方法都行

父类 actionsupport 的 validate 和 execute 不要重写,把配置文件中定义的 method 都写上
如上例中的 editUI 和 validateEditUI

还有,遇到问题自己多想想. 拿到 csdn 上来问,还不如自己想到的方法更透彻
[/Quote]

支持13楼
jacky_zuo 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yjailj 的回复:]
我在此链接中也回答过相同问题:
http://topic.csdn.net/u/20090908/15/32830894-e841-4353-9ef3-b021b69bf120.html

LZ 可以自己想想这个流程嘛:

用 chain 传递过来的值, 在后面的 请求中执行完 validate 后,fielderror 被取到
此时不再执行 editUI 而直接跳到 input 视图.所以,把值放在什么地方查询,成了关键...


这些天看到一些用 struts2 的人,任意时间任意空间都 带着 struts1 的思维方式就头疼

csdn 确实让人挺失望的...
[/Quote]

我是希望利用配置文件的校验方式来实现,所以才有这种需求。感觉配置文件还是不很方便啊!
434gfhghghg444545 2009-10-31
  • 打赏
  • 举报
回复
<result name="input">/WEB-INF/pages/other.jsp </result> 你把这个other.jsp界面换为你的编辑界面,显示错误信息
javaors 2009-10-31
  • 打赏
  • 举报
回复
是啊struts1和struts2好多人都没搞清,struts2不是struts1的升级...
jacky_zuo 2009-10-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jbc52 的回复:]
问题:校验框架在编辑页面提交出错后能显示出错信息,且返回至编辑页面时也必须先经过Action
楼主你把问题复杂化了,你把在出错的时候,你把用户的数据放在出错页面的请求中,在由出错页面通过请求Action顺便把数据带回到编辑页面就可以了。
总体想法是,你只要把用户的数据在带在请求中,按正常跳转执行就可以了。


[/Quote]

能说具体点吗
jacky_zuo 2009-10-30
  • 打赏
  • 举报
回复
那样会报错的,提示没有input
yjailj 2009-10-30
  • 打赏
  • 举报
回复
我在此链接中也回答过相同问题:
http://topic.csdn.net/u/20090908/15/32830894-e841-4353-9ef3-b021b69bf120.html

LZ 可以自己想想这个流程嘛:

用 chain 传递过来的值, 在后面的 请求中执行完 validate 后,fielderror 被取到
此时不再执行 editUI 而直接跳到 input 视图.所以,把值放在什么地方查询,成了关键...


这些天看到一些用 struts2 的人,任意时间任意空间都 带着 struts1 的思维方式就头疼

csdn 确实让人挺失望的...
yjailj 2009-10-30
  • 打赏
  • 举报
回复
看到 LS 的留言我挺郁闷的, 越帮越忙 ...

<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>

跟你这样讲吧. 把你想到 other.jsp 显示的数据放在 validateEditUI() 方法中去查询

对 struts 2 的流程熟悉一点吧. 拜托! LS 的各位...

像上面的 editUI 请求,其执行顺序是: validateEditUI --> validate (此方法执行完后检查 filederror 或 actionerror 中是否有值,有则直接回到 input 视图不再向下执行)--> editUI --> execute

敬告 LZ ,要养成写 validate 方法的习惯. 哪怕什么校验都不做,写个空方法都行

父类 actionsupport 的 validate 和 execute 不要重写,把配置文件中定义的 method 都写上
如上例中的 editUI 和 validateEditUI

还有,遇到问题自己多想想. 拿到 csdn 上来问,还不如自己想到的方法更透彻
redlotus_lyn 2009-10-29
  • 打赏
  • 举报
回复
我看看能不能帮你解决...................
liangzhenphp 2009-10-29
  • 打赏
  • 举报
回复
只要你在EditAction中有editUI方法,应该是可以执行到这个方法中的
  • 打赏
  • 举报
回复
把editUI的result name 为input的换掉,换成其他名字
islandrabbit 2009-10-29
  • 打赏
  • 举报
回复
mark
yulu0214 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 jacky_zuo 的回复:]
需求:
    我的每个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页面;

网上已经有很多人碰到这样的问题,但是都没有答案,希望各位大侠帮忙解决,多谢!
[/Quote]
把editUI的result name 为input的换掉,换成其他名字
jacky_zuo 2009-10-29
  • 打赏
  • 举报
回复
问题是出错页面只能直接进入jsp页面,无法进入Action后进入jsp页面
JBC52 2009-10-29
  • 打赏
  • 举报
回复
问题:校验框架在编辑页面提交出错后能显示出错信息,且返回至编辑页面时也必须先经过Action
楼主你把问题复杂化了,你把在出错的时候,你把用户的数据放在出错页面的请求中,在由出错页面通过请求Action顺便把数据带回到编辑页面就可以了。
总体想法是,你只要把用户的数据在带在请求中,按正常跳转执行就可以了。

平淡面对 2009-10-29
  • 打赏
  • 举报
回复
可以Struts2 Dispatcher试试。
加载更多回复(2)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧