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不鼓励这样做,但它可能对您有用

代替动作链接,请尝试将完成此请求的所有代码放入单个动作中,并使用针对用户和地址的帮助程序或服务类来分隔和重用代码,而不是“动作链接”。