2016-05-04 25 views
4

Ich versuche, etwas ähnliches zu this question zu tun, aber die Antworten beheben mein Problem nicht. Ich benutze Struts2 Version 2.3.28.1.Struts2: String-Literal für Eigenschaftswert auswerten

Ich versuche, Daten in der Sitzung mit einem <s:property>-Tag und einem dynamischen Wert String-Literal zuzugreifen.

Wenn ich tun:

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

Dann wird die korrekten Daten angezeigt wird. Nun, wenn ich das versuche folgendes:

<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> 

Welche zeigt:

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

(Ja ich irgendwie versucht, jede mögliche Kombination, die ich auch denken könnte, wenn sie keinen Sinn machen ...)

Wie kann ich das <s:property> Tag bewerten #part2 statt als String-Literal interpretieren? Nach meinem Verständnis hätte %{} den Trick doch nicht geschafft.

Antwort

3

Sie versuchen, Wert von der Sitzung abzurufen und gehen durch #attr es wird nicht funktionieren.

Es gibt einen einfacheren Weg. Verwenden Sie das Schlüsselwort #session direkt.

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

Vielen Dank !! Ich schlug mit dem Kopf auf den Schreibtisch, haha – Flanfl