struts2中redirect到其他网址并传递参数

larkim82 2011-09-01 06:05:56
现在有一需求,我需要在struts2中跳转到另外一个网站,并传递相关的参数过去,我在配置文件中是这样写的:
<action name="aa" class="com.test" method="aa">
<result name="success" type="redirect">
http://www.test.com/Speediness.do
<param name="DocID">${DocID}</param>
<param name="DoclibID">${DoclibID}</param>
</result>
</action>


为什么会报错,参数该如何传?
我试过用另外一种方式,也不行
<action name="aa" class="com.test" method="aa">
<result name="success" type="redirect">
http://www.test.com/Speediness.do?DocID=${DocID}&DoclibID=${DoclibID}
<param name="DocID">${DocID}</param>
</result>
</action>


上面两个参数在action中均有对应的get,set方法。
...全文
1633 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
a13069730106 2011-09-05
  • 打赏
  • 举报
回复
为什么非要用redirect呢
(方法一):
我现在需要把一个action(action1)中的变量传递到另外的一个action(action2)中,两个action中都定义了属性

String userId,User
user,并且定义了相应的getter,setter方法,在struts.xml中配置如下:
<action name="action1" class="Action1">
<result name="toLiginIndex" type="redirectAction" >
<param name="actionName">Action2</param>
<param name="namespace">/</param> 同一个namespace时可以不写
<param name="user">${user}</param>
<param name="userId">${userId}</param>
</result>
<result name="notLogIn">/index_notLogin.jsp</result>
</action>

(方法二)
<result name="toLiginIndex" type="chain">
<param name="actionName">Action2</param>
</result>
这时action1的参数就都传到Action2了,Action2没有要Action1传递的参数的声明也可以在页面中显示出参数的值

(方法三)
<result name="topic" type="redirect">/topicAction!findTopics.do?topicId=${topicId}</result>

lxf001002 2011-09-05
  • 打赏
  • 举报
回复
换个角度也能解决问题
  • 打赏
  • 举报
回复
然后return null;
  • 打赏
  • 举报
回复
在action里,HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect("xxx.action?id=xxx&name=xxx");
BearKin 2011-09-02
  • 打赏
  • 举报
回复
顺带补充下 你这个不叫解决问题 叫逃避问题..
BearKin 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 yanggang82 的回复:]
现在有一需求,我需要在struts2中跳转到另外一个网站,并传递相关的参数过去,我在配置文件中是这样写的:

XML code
<action name="aa" class="com.test" method="aa">
<result name="success" type="redirect">
……
[/Quote]

之所以出现错误 原因是你的&没有被转义 所以你的action里应该写成


http://www.test.com/Speediness.do?DocID=${DocID}&DoclibID=${DoclibID}
shixitong 2011-09-02
  • 打赏
  • 举报
回复
class="com.test"


楼主的Action 名是test?
softroad 2011-09-02
  • 打赏
  • 举报
回复
接分啦。
xiaoqiuwyh 2011-09-02
  • 打赏
  • 举报
回复
把报的什么错帖上来。
larkim82 2011-09-02
  • 打赏
  • 举报
回复
问题已经搞定,换了一种思路,现将解决办法共享出来:
<action name="aa" class="com.test" method="aa">
<result name="error">/test/error.jsp</result>
<result name="success">/test/success.jsp</result>
</action>

首先我不直接在配置文件里进行跳转,而是跳转到一个自己的页面中,然后在action里将地址拼接好了以后,放到request中,代码如下:

String redirectUrl = "http://www.test.com/Speediness.do?DocID='"+DocID+"'&DoclibID='"+DoclibID+"'";
request.setAttribute("redirectUrl", redirectUrl);

然后我在jsp页面直接做个链接,跳转过去
<a href="<s:property value="%{#request.redirectUrl}"/>" target="_blank">查看结果</a>


感谢各位热心的帮助,也希望解决方法能给遇到相同问题的人一定的帮助。
licip 2011-09-01
  • 打赏
  • 举报
回复
到底报什么错。你要把错误的信息粘贴上来吧。
larkim82 2011-09-01
  • 打赏
  • 举报
回复
js的方式我试过,直接在action中response.getWriter().print("<script>window.location.href='http://www.test.com/Speediness.do?DocID='+DocID+'&DoclibID='+DoclibID</script>");
也没用用
GIS__ 2011-09-01
  • 打赏
  • 举报
回复
用js中的window.location.href="xxxx"
五哥 2011-09-01
  • 打赏
  • 举报
回复
楼上的应该可以的
xushuai85278 2011-09-01
  • 打赏
  • 举报
回复
我没有测试 不过我看过一篇博客 讲了类似的东西
http://lzc0088.iteye.com/blog/506082
希望对你有用!

81,122

社区成员

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

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