Struts 2:动作之间的参数
问题内容:
我有以下问题:完成表单后,我需要传递一个参数(例如ID),并且操作保存该表单的值,这将转发给结果=“
success”,并且我需要调用该操作成功时附带ID和其他参数,以备以后在下一个表单中使用以保存此信息(info-form2和info.form1)…
例如:
FORM1(USER)====“成功” ==== > FORM2(ADDRESS)
userForm.html =================== > addressForm.html?user_id = X
…(其中X:Id将UserAction(方法:save)的ID传递给AddressAction(方法:newAddress))
请感谢您的帮助
提前致谢
问题答案:
您使用了“转发”一词,但听起来您想转到一个新页面(address.html)以收集有关该地址的更多信息。在这种情况下,您需要在用户操作完成后重定向到地址页。
<action name="user" class="UserAction">
<!-- Redirect to another namespace -->
<!-- for Struts 2.2 --> <result type="redirectAction">
<!-- for Struts 2.0 <result type="redirect-action"> -->
<param name="actionName">collect-address</param>
<param name="userId">${userId}</param>
</result>
</action>
$ {userId}语法将在UserAction上调用getUserId并传递您在问题中显示的参数:addressForm.html?user_id =
X。收集地址的成功结果可以进入addressForm.html。文档在这里。如果要避免使用其他操作,则可以尝试使用结果类型=“
redirect”,然后通过这种方式进行传递。
如果您确实要转发,则可以使用动作链接。Struts2团队的Ted Husted不鼓励这样做,但它可能对您有用。
代替动作链接,请尝试将完成此请求的所有代码放入单个动作中,并使用针对用户和地址的帮助程序或服务类来分隔和重用代码,而不是“动作链接”。