一个接一个地执行多个动作

Chr*_*ris 5 struts struts2

我需要一种用一个请求执行多个struts动作的方法.目标是最小化对服务器的请求的需要.所以我需要的是像"MultiAction"这样的东西,它将一个动作列表作为它应该执行的参数,然后返回这个动作的"组合"结果.

例如:

  • 客户端分为很多模块
  • 一个模块需要从服务器获取信息
  • 处理此请求的客户端有一个代理
  • 这个代理现在去说"嘿你其他模块,我要去服务器,你需要什么?"
  • 其他模块现在可以选择在代理处提交请求
  • 然后向服务器发出实际的"组合"请求,并再次分割结果并将其提供给请求它的模块

所以我的问题是:

  1. Struts2中有一种标准的方法可以解决这个问题吗?
  2. 是否有一种标准的"公共"方式手动调用另一个动作并从值Stack中获取结果?

Bhu*_*ara 0

请求 > 操作 1 > 操作 2 > 响应 在 Struts 2 中,这可以通过 Chain Result 来实现。Chain Result 是一种结果类型,它使用自己的拦截器堆栈和结果调用 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>
Run Code Online (Sandbox Code Playgroud)

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