我有一个 struts 2 项目,其中有 3 个执行不同数据报告功能的操作。我正在创建一个主页操作,以显示主页上其他 3 个操作的数据片段。
目前我有 Home.action 导入其他 3 个动作,然后使用其他动作对象来获取数据。这感觉不“正确”,所以我想知道在 Struts 中最好的方法是什么?最好不要过多地编辑原始的 3 个动作。
我有类似的困境,我通过定义一个不同的动作来解决它们,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>