2017-03-31 29 views
1

我有一個類Message.java一個名爲origindestinationStruts 2. s:屬性。如何獲取名稱作爲參數傳遞給jsp的變量的值?

Message.java

public class Message{ 

    private Location origin; 
    private Location destination; 

//Getters and setters correctly defined 
} 

Location.java

public class Location{ 

private String address;  
} 

MessageAction.java同類型Location.java的兩個變量

public class MessageAction { 

     private Message message; 
     //Getters and setters correctly defined 
    } 

我想重用代碼,所以我創建了一個普通的JSP並通過參數傳遞這些變量的名稱。 (當然,代碼更復雜,這只是一個基本的例子,所以它確實有助於我重用代碼)

message.jsp

<s:push value="message"> 
    <s:include value="/jsp/location.jsp"> 
     <s:param name="variableName" value="'origin'" /> 
    </s:include> 
    <s:include value="/jsp/location.jsp"> 
     <s:param name="variableName" value="'destination'" /> 
    </s:include> 
</push> 

這裏談到的問題,我不知道如何顯示%{variableName}.address的價值。我嘗試了幾種組合並搜索了一段時間,但是我還沒有找到任何東西。

location.jsp

<s:set name="variableName">${param.variableName}</s:set> 
<s:property value="%{%{variableName}.address}" /> 

如果我寫的變量直接的名字,我正確地接收自己的價值,所以在操作正確設置它們。

<s:property value="origin.address" /> 
<s:property value="destination.address" /> 
+0

請參閱http://stackoverflow.com/q/16712395/1700321。 –

回答

0

這是錯誤的OGNL表達

%{%{variableName}.address} 

,如果你想重用JSP爲模板,那麼你應該使用有效的OGNL表達式。儘管如此,傳遞參數的名字是巨大的,因爲你將有複雜的OGNL返回這個參數名稱的值。

你也應該知道,

參數作爲請求參數來傳遞,所以使用${param.ParamName}符號來訪問它們。不要使用property標籤訪問包含文件中的參數。

相關問題