支柱2:操作参数之间
-
16-09-2019 - |
题
我有以下问题: 我需要传递一个参数(例如ID)当我完成一个形式和动作保存表单的值,这将转发到结果=“成功”,我需要的是将在成功地调用操作来与ID和其他参数,以在后面的下一个表格用于保存该信息(信息-窗口2和info.form1)...
例如:
<强> FORM1(USER)==== “成功” ====> FORM2(ADDRESS)强>
userForm.html ===================> addressForm.html USER_ID = X ...(其中,X:UserAction的编号传递掷(方法:保存)到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成功的结果。 文档这里如果你想避免使用其他行动,你可以尝试使用的结果类型=“重定向” 和通过这种方式传递的东西。
如果你真的想转发,您可以使用动作链接一>。这是由Ted Husted在Struts2的小组灰心了,但它可能为你工作。
相反动作链接的,试图把所有的代码来完成这一请求转换成一个单一的操作,然后使用辅助或服务类的用户和地址分离和重复使用的代码,而不是“动作链”。
其他提示
不是很清楚你想要做什么。
看起来像一个动作的全成执行后,该请求被转发到另一个动作。在第一个动作你要传递的参数ID和使用,在第2个动作。由于两者都得到在同一请求中使用的操作调用可以保存ID参数在这样请求
了request.setAttribute( “ID”,iDValueObject);
在所述第二动作可以提取ID的这样的值
request.getAttribute( “ID”);
此应该工作:
<!-- 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>