Struts2:使用变量值作为属性名称

时间:2016-08-11 11:04:25

标签: jsp struts2 ognl

在我的jsp中,我在迭代器中有一个带有“text”属性的对象列表中的标签:

<s:iterator value="survey.questions">
   <s:label for="d_%{id}" value="%{text}"></s:label>

   .....

<s:iterator/>

现在,既然我想本地化标签内的文本,我为我支持的每种语言添加了一个属性(textEN,textIT等等),所以我希望从本地读取属性名称我之前在页面中设置的变量,例如:

<s:set var="loc" value="textEN" />

我无法做到这一点,我尝试使用以下表达式

<s:label for="d_%{id}" value="%{#loc}"></s:label>   

但它什么都不打印。

2 个答案:

答案 0 :(得分:1)

解决。

我必须在迭代器中添加一个id

<s:iterator value="survey.questions" id="question">

然后使用以下语法直接访问该属性:

<s:label for="d_%{id}" value="%{#question[#loc]}"/>

谢谢大家。

答案 1 :(得分:0)

您必须将字符串放在单引号中以阻止struts将此文本作为变量名称:

<s:set var="loc" value="'textEN'"/>

现在您的%{#loc}应该有效。