2012-08-27 19 views
1

我有一個struts 2項目,其中有3個動作執行不同的數據報告功能。我正在創建一個主頁操作,顯示主頁上其他3個操作的數據片斷。Struts 2:使用其他動作的數據

目前我有Home.action導入其他3個動作,然後使用其他動作對象來獲取數據。這並不是'正確的',所以我想知道在Struts中做什麼的最好方法是什麼?最好不要太多地編輯原始的3個動作。

+0

甚至你可以叫用行動'的ExecuteReuslt =真',這將只呈現相同的頁面 –

回答

1

我有類似的難題,我通過定義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> 
+0

「定義在struts.xml中不同的操作僅返回該操作的結果(不包括它周圍的瓷磚等)上的內容「。我不太清楚你的意思是......爲每個3分別編寫動作並使用jQuery/Ajax來運行這些新的補充操作? – user1628194

+0

我編輯了我的原始帖子,以更好地解釋我用於解決類似問題的方法。但我的意思是編寫單獨的動作標籤,指向相同的動作,然後用jQuery獲取結果。 – Reigo