1

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

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

4

1 回答 1

1

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

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

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

我的 loadBrokerReport 操作在较大的周围 tile(布局)内显示代理报告,但 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>
于 2012-08-27T16:25:15.250 回答