2012-08-27 29 views
0

如果我有與轉發到JSP我會要求像這樣我的性動作的典型設置:Struts 2的動作標籤,檢索性能

<s:property value="myVariable" />

其中MYVARIABLE是在動作的變量。

我想在另一個頁面中使用動作標籤是這樣的:使用動作標籤像上面時

<s:action name="actionName" executeResult="false"> 
    <s:param name="switch">true</s:param> 
</s:action> 

如何訪問myVariable?我試過<s:property value="myVariable" />但它不起作用。

+0

'myVariable'是'actionName'動作的一個屬性?你在's:action'元素內部還是外部(下面)使用''? – leonbloy

+0

是myVariable是actionName操作類中的一個屬性。 ''在's:action'下面 – user1628194

回答

4

當您編寫<s:property value="myVariable" />時,Struts在其「Value Stack」中查找屬性myVariable。目前的行動在ValueStack中,這就是典型設置工作的原因。現在,在

<s:action name="actionName" executeResult="false"> 
    <s:param name="switch">true</s:param> 
</s:action> 
<s:property value="myVariable" /> 

的情況時,執行最後一行actionName動作已經執行,目前的行動是不是更主要的(「外」)之一。如果要訪問「內部」動作的屬性,可以使用以下幾種方法:docs

要麼添加var屬性,以便將執行的(內部)動作分配給變量,並且與# syntax引用它:

<s:action name="actionName" var="innerAction" executeResult="false"> 
    <s:param name="switch">true</s:param> 
</s:action> 
<s:property value="#innerAction.myVariable" /> 

或者,在你的操作方法,明確添加您的房產價值在一定範圍(如:屬性)

// in your inner action: 
ServletActionContext.getRequest().setAttribute("myVariable", "blah blah"); 

<s:property value="#attr.myVariable" /> 

免責聲明:我沒有測試這個