8

我有以下问题:当我完成一个表单并且操作保存表单的值时,我需要传递一个参数(例如 ID ),这将转发到 result = "success" 我需要将要调用的操作成功时附带 ID 和其他参数,以便稍后在下一个表单中使用以保存此信息(info-form2 和 info.form1)...

例如:

FORM1(用户)====“成功”====> FORM2(地址)

userForm.html ===================> addressForm.html?user_id=X ...(其中 X : Id 将 UserAction (method:save) 的 throw 传递给 AddressAction (方法:新地址))

请感谢您的帮助

提前致谢

4

3 回答 3

29

您使用了“转发”一词,但听起来您想转到一个新页面 (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。collect-address 可以将成功结果发送到 addressForm.html。文档在这里。如果您想避免使用其他操作,可以尝试使用结果 type="redirect"并通过这种方式传递。

如果你真的想转发,你可以使用动作链接Struts2 团队的 Ted Husted 不鼓励这样做,但它可能对您有用。

不要使用动作链接,而是尝试将完成此请求的所有代码放入单个动作中,并使用 User 和 Address 的帮助器或服务类来分离和重用代码,而不是“动作链接”。

于 2009-04-24T19:26:52.083 回答
3

不是很清楚你想做什么。

看起来像在成功执行一个动作之后,请求被转发到另一个动作。在第一个动作中,您要传递参数 ID 并在第二个动作中使用它。由于这两个操作都在同一个请求调用中使用,您可以像这样将 ID 参数保存在请求中

request.setAttribute("ID", iDValueObject);

在第二个动作中,您可以像这样提取 ID 的值

request.getAttribute("ID");

于 2009-04-24T05:52:25.783 回答
0

这应该有效:

  <!--  Package Default -->
    <package name="**default**" extends="struts-default,json-default" namespace="/">
        <action name="noOp" class="com.web.myapp.action.NoOpAction">
           <result name="success" type="chain">
                    <param name="requiresValidation">true</param>
                    <param name="actionName">userAuthentication</param>
                    <param name="namespace">/user</param>
          </result>
        </action>   
    </package>
    <!--  Package User -->
    <package name="user" extends="struts-default,json-default" namespace="/user">
    <action name="userAuthentication" class="com.web.myapp.action.AuthenticateAction">
    ...
    </action>
于 2011-07-19T05:17:51.880 回答