2013-06-05 50 views
1

如何通過變量調用操作方法?爲了更好地解釋,此代碼的工作如何通過變量在Struts 2上調用Action方法?

<s:action name="indexController!loadData" executeResult="false" /> 

...但是這另一種不起作用

<s:action var="mainController" name="indexController" />  
<s:action name="mainController!loadData" executeResult="false" /> 

...我也試過

<s:action var="mainController" name="indexController" />  
<s:action name="#mainController!loadData" executeResult="false" /> 

但事實並非如此也工作。我需要第二種模式,因爲我必須在頁面上動態切換動作。

回答

0

屬性,你需要強制OGNL評價%{}

嘗試使用所設定的標籤,而不是行動標籤

<s:set var="mainController" value="%{'indexController'}" /> 
<s:action name="%{#mainController}!loadData" executeResult="false" /> 

或替代

<s:set var="mainController" value="%{'indexController!loadData'}" /> 
<s:action name="%{#mainController}" executeResult="false" /> 

<c:set var="mainController" value="indexController" scope="request"/> 
<s:action name="%{#request.mainController}!loadData" executeResult="false" /> 
+0

我儘可能嘗試表示,但在Struts 2拋出這個異常 '錯誤[org.apache.struts2.components.ActionComponent]無法執行操作://[email protected] !loadData:沒有爲命名空間[/]和與上下文路徑[/ fpf]關聯的操作名稱[[email protected]]映射的操作。 - [unknown location] \t at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)[:2.3.14.2]' –

+0

然後它工作:'... action name [fi.fpf.mvc.controller .IndexController ...'現在這是*另一個*問題,可能與**命名空間相關**。通過發佈你的struts.xml編輯你的問題可能有幫助 –

+0

如果我寫 '' 它的作品:我認爲問題出在評估表情 %{#mainController} –

相關問題