2013-04-08 35 views
5

我需要一种方法来执行一个请求的多个struts动作。目标是尽量减少对服务器的请求。所以我需要的是类似于“MultiAction”的东西,它获取一系列动作作为它应该执行的参数,然后返回这个动作的“组合”结果。一个接一个地执行多个动作

例如:

  • 客户在很多模块
  • 一个模块需要从服务器
  • 获取信息分手有一个在客户端处理此请求
  • 代理
  • 这个代理现在去说,“嘿你其他模块,我要做一个rquest到服务器,你需要什么?”
  • 其他模块现在可以选择在代理
  • 然后实际的“组合”请求被触发到服务器,并且结果被再次分裂,并提供给请求它

模块文件的请求所以我的问题是:

  1. 有没有在Struts2中如何做这样的标准方式?
  2. 是否有一种标准的“公共”方式手动调用另一个操作并从值Stack获取结果?
+0

您能否提供一个真实世界的基本示例? – 2013-04-08 11:43:22

+3

有动作链接,几乎总是一个坏主意。有提到的Actonj标签。也就是说,我很难设想这将会有用 - 看起来你有太多的行为被要求从错误的地方。 – 2013-04-08 12:42:54

回答

0

请求>操作1>动作2>响应 在Struts 2,这可以通过链结果来实现。链结果是一个结果类型,它用它自己的拦截器堆栈和结果调用一个Action。该拦截器允许一个Action将请求转发给目标Action,同时传播源Action的状态。以下是如何定义这个序列的例子。

<package name="public" extends="struts-default"> 
      <action name="createUserAccount" 
       class="net.onlineSolution.CreateAccountAction"> 
       <result name="success" type="chain">login</result> 
      </action> 
      <action name="login" 
       class="net.onlineSolution.LoginAction"> 
       <result name="success" type="chain">showDashboard</result> 
      </action> 
      <action name="showDashboard" 
       class="net.onlineSolution.DashboardAction"> 
       <result name="success">/WEB-INF/jsp/dashboard.jsp</result> 
      </action> 
    </package> 

在上面的代码中,我们定义了三个操作:createUserAccount,login和showDashboard。注意每个动作如何使用标签链接到下一个动作。因此,当用户第一次在系统中登录时,将使用createAccount操作。一旦创建帐户,用户将被转发至登录操作。

0

好吧。通过使用简单的struts结果类型是非常有可能的。 要在一个动作中处理多个动作,可以在结果属性中使用<result name="success" type="redirectAction"></result>。通过这些多个动作,您还可以通过使用<param>struts.xml来传递n个参数。以下示例代码供您参考: -

<result name="success" type="redirectAction"> 
    <param name="actionName">[.. you can write another action here ..]</param> 
    <param name="[.. parameter name ..]">${.. parameter name ..}</param> 
</result> 
2

这可以通过在结果类型中使用“redirectAction”来实现。以下代码是相同的示例。您必须根据您使用嵌套Actions的要求,在struts XML中配置action标签。

 <action name="userHomeAction" class="com.etp.connect.struts.action.UserHomeAction"> 
     <result type="redirectAction" name="SUCCESS_EDIT"> 
      <param name="actionName">getUserEditData</param> 
      <param name="selectedUser">${selectedUser}</param>   
     </result> 
     <result name="error">/jsp/userMgmt/Users_Home.jsp</result> 
     <result name="login">/jsp/loginMgmt/Login.jsp</result> 
    </action> 
相关问题