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

Struts2: Using a variable value as property name

在我的 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>   

但它什么也不打印。

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

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

现在您的 %{#loc} 应该可以工作了。

已解决。

我必须向迭代器添加一个 id

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

然后直接访问 属性 语法如下:

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

谢谢大家