2016-05-04 37 views
4

我正在嘗試做類似this question的操作,但答案沒有解決我的問題。我正在使用Struts2版本2.3.28.1。Struts2:評估屬性值的字符串文字

我試圖使用<s:property>標記和動態值字符串文字來訪問會話中的數據。

如果我做的:

<s:property value="#session.data_1"></s:property> 

然後會顯示正確的數據。現在,當我嘗試以下方法:

<s:set var="part1" value="#variable.code"></s:set> 
<s:set var="part2" value="'#session.data_'+#part1"></s:set> 

<s:property value="part2"></s:property> 
<s:property value="%{part2}"></s:property> 
<s:property value="%{#part2}"></s:property> 
<s:property value="#attr[#part2]" default="Not working"></s:property> 
<s:property value="(#part2)" default="Not working"></s:property> 
<s:property value="%{(#part2)}" default="Not working"></s:property> 

該款顯示器:

#session.data_1 
#session.data_1 
#session.data_1 
Not working 
#session.data_1 
#session.data_1 

(是的,我還挺試過,我能想到的,即使他們是沒有意義的每一個可能的組合...)

如何使<s:property>標記評估#part2而不是將其解釋爲字符串文字?在我的理解%{}應該做的伎倆,但沒有。

回答

3

您正在嘗試從會話中檢索值,並通過#attr它不起作用。

有更簡單的方法。直接使用#session關鍵字。

<s:property value="#session['data_' + #variable.code]" /> 
+1

謝謝!那個哈哈,我正在桌子上敲着頭 – Flanfl