【发布时间】:2013-09-05 09:33:11
【问题描述】:
我在我的 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 并动态填充这些变量内容。
即。
<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。
【问题讨论】:
-
你试过
#application.nameList吗?id也已被 var 属性替换。 -
我修改为 s:iterator value="application.nameList" id="nameListID" var="nameListVar" 和 s:textfield 的值为 value="%{application.animalDTO.name_#nameListVar }" 但仍不显示值
-
并且
var属性不是必需的。 -
为什么你还在你的文本中使用
application,因为迭代器会将对象推送到值堆栈的顶部,在你的情况下,对象将是animalDTO,你可以通过引用那里的名称来引用属性,类名也应以大写字母开头
标签: java jsp struts2 ognl struts-tags