我有一個struts 2項目,其中有3個動作執行不同的數據報告功能。我正在創建一個主頁操作,顯示主頁上其他3個操作的數據片斷。Struts 2:使用其他動作的數據
目前我有Home.action導入其他3個動作,然後使用其他動作對象來獲取數據。這並不是'正確的',所以我想知道在Struts中做什麼的最好方法是什麼?最好不要太多地編輯原始的3個動作。
我有一個struts 2項目,其中有3個動作執行不同的數據報告功能。我正在創建一個主頁操作,顯示主頁上其他3個操作的數據片斷。Struts 2:使用其他動作的數據
目前我有Home.action導入其他3個動作,然後使用其他動作對象來獲取數據。這並不是'正確的',所以我想知道在Struts中做什麼的最好方法是什麼?最好不要太多地編輯原始的3個動作。
我有類似的難題,我通過定義struts.xml
中的不同動作來解決它們,它只返回動作的結果(不包括周圍的tiles
等)。
然後我用jQuery
使用Ajax
,以獲取不同的操作,並且有實際讓服務器計算不同請求的不同的動作,因此我的用戶可以在別人面前看到一些結果的額外獎金,那是很好的,如果你的行爲需要3秒鐘來計算結果。
請注意,這裏使用瓷磚實際上是完全不相關的。 只需使用不同的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>
「定義在struts.xml中不同的操作僅返回該操作的結果(不包括它周圍的瓷磚等)上的內容「。我不太清楚你的意思是......爲每個3分別編寫動作並使用jQuery/Ajax來運行這些新的補充操作? – user1628194
我編輯了我的原始帖子,以更好地解釋我用於解決類似問題的方法。但我的意思是編寫單獨的動作標籤,指向相同的動作,然後用jQuery獲取結果。 – Reigo
甚至你可以叫用行動'的ExecuteReuslt =真',這將只呈現相同的頁面 –