3

当索引是变量时,我在访问列表的特定元素时遇到了一些问题。

当索引只是一个数字时,我完全没有问题显示我正在寻找的内容。

<s:property value="#session.userList[1].email" />

这完美地工作,并显示在 UserList 的该元素中找到的电子邮件

但是,当我将索引更改为变量时,我很难找到编写 ognl 语句的正确方法。我已经尝试了所有我能想到的 %# 组合,但都没有运气。

<s:set var="userIndex" >${param.index}</s:set>
<s:property value="#session.userList[#userIndex].email" />

我应该如何格式化我的 ognl 语句?

4

2 回答 2

5

您应该像本例中那样对其进行格式化:

<s:set var="userIndex" value="%{@java.lang.Integer@valueOf(#parameters.index)}" />
<s:property value="%{#session.userList[#userIndex].email}" />

如果您正在使用 struts 标签,最好使用 OGNL 来评估表达式而不是 EL。强制 OGNL 评估整个表达式而不是部分。

需要将变量的值转换为整数类型。用于名称的字符串类型。

于 2013-04-08T16:02:50.847 回答
0

你也可以使用

<s:set var="index" value="%{@java.lang.Integer@valueOf(#row.index)}" />

这是为索引设置一个整数值

然后您可以访问列表的特定值

<s:property value="%{yourListObject.get(#index).yourField}" />
于 2020-04-22T07:57:46.163 回答