1

我在我的 struts 2.0 动作类中使用 ApplicationAware。所以,我在应用程序映射中放置了一个条目

application.put("animalDTO", animalDTO);

动物DTO:

public class AnimalDTO {

    private String name_N1;
    private String name_N2;
    private String name_N3;
    private String name_N4;

    // getters and setters

}

现在,在进入我的 jsp 页面之前,我正在填充每个变量中的值。

在 JSP 页面中:我正在使用迭代器来获取 N1、N2 直到 N4。现在我需要创建 s:textfield 并动态填充这些变量内容。

IE。

<s:iterator value="application.nameList" var="nameList">
    <s:textfield theme="simple" value="%{application.animalDTO.name_#nameList}" />
</s:iterator>

在这里,我没有填充任何值。

如果我硬编码为->value="%{application.animalDTO.**name_N1**}"

然后所有文本字段都将填充 name_N1 的值,但这不是我需要的。我需要动态获取值。

谁能帮我解决这个OGNL要求?提前致谢

======================

我也试过这个,我创建了所需的 ognl 格式的字符串变量,但我不知道如何将字符串作为 valuestack 的查找。这就是我所做的:

<s:iterator value="application.nameList" var="nameList">
    <s:set var="varUrl" value="%{'application.animalDTO.name_' + #nameList}" />
    <s:property value="varUrl" />
    <s:textfield name="NAME__%{#nameList}" theme="simple" id="NAME-%{#nameList}" value="%{varUrl}" />
</s:iterator>

但相反,文本框正在获取如下值:

application.animalDTO.name_1
application.animalDTO.name_2
application.animalDTO.name_3
application.animalDTO.name_4

需要的是与这些变量对应的值。

任何想法如何将此字符串转换为对象/键以查找到 valuestack。

4

1 回答 1

1

最后我得到了解决方案。我尝试了许多跟踪和错误方法。最后找到答案。我们可以通过执行以下操作动态读取属性值:

<s:iterator value="application.nameList" var="nameList">
    <s:textfield theme="simple" value="%{application.animalDTO['name_' + #nameList]}" />
</s:iterator>

我试过 %{application. animalDTO['name_' + #nameList] } 并且成功了。:-)

于 2013-09-06T09:14:22.913 回答