Struts 2:使用其他操作的数据

时间:2012-08-27 16:20:32

标签: java jsp struts2

我有一个struts 2项目,其中有3个动作执行不同的数据报告功能。我正在创建主页操作,以显示主页上其他3个操作的数据片段。

目前我有Home.action导入其他3个动作,然后使用其他动作对象来获取数据。这感觉“不正确”,所以我想知道在Struts中最好的方法是什么?最好不要过多地编辑原来的3个动作。

1 个答案:

答案 0 :(得分:1)

我有类似的困境,我通过在struts.xml中定义一个仅返回操作结果的不同操作来解决它们(没有周围的tiles等。)。

然后我使用jQuery使用Ajax获取不同的操作,并且实际上让服务器计算不同请求中的不同操作有额外的好处,因此我的用户可以看到一些结果先于其他人,如果您的行动花费3秒钟来计算结果,那就太好了。

请注意,这里使用Tiles实际上完全无关紧要。 你可以通过使用不同的JSP来获得相同的效果(假设你想要一点点自定义外观)。

我的loadBrokerReport操作在更大的周围区块(布局)中显示代理报告,但是loadBrokerReportAjax从同一个Action类执行相同的方法,但是通过ajaxReport.jsp文件呈现结果(那样杂乱,更适合于显示在其他东西旁边。)

    <!-- This is the normal action the users select from menu -->
    <action name="loadBrokerReport" method="loadBrokerReport" class="ee.reinmets.intra.action.BrokerReportsAction">
        <result type="tiles">brokerReport</result>
    </action>

    <!-- This is the action called via ajax -->
    <action name="loadBrokerReportAjax" method="loadBrokerReport" class="ee.reinmets.intra.action.BrokerReportsAction">
        <result>/WEB-INF/pages/brokerReports/ajaxReport.jsp</result>
    </action>

    <!-- This is the tile i'm referencing above, in tiles.xml -->
    <definition name="brokerReport" extends="default">
      <put-attribute name="body" value="/WEB-INF/pages/brokerReports/normalReport.jsp" />
    </definition>