Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2在索引为变量时访问列表的特定索引_Java_Jsp_Struts2_Ognl - Fatal编程技术网

Java Struts2在索引为变量时访问列表的特定索引

Java Struts2在索引为变量时访问列表的特定索引,java,jsp,struts2,ognl,Java,Jsp,Struts2,Ognl,当索引是变量时,我在访问列表的特定元素时遇到一些问题 当索引只是一个数字时,我在显示我要查找的内容时一点问题也没有 <s:property value="#session.userList[1].email" /> 这非常有效,并显示在UserList元素中找到的电子邮件 但是,当我将索引更改为变量时,我很难找到编写ognl语句的正确方法。我已经尝试了我能想到的每一种%#组合,但没有运气 <s:set var="userIndex" >${param.index}&

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

当索引只是一个数字时,我在显示我要查找的内容时一点问题也没有

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

这非常有效,并显示在UserList元素中找到的电子邮件

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

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

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

您应该按照以下示例中的格式设置它:

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

如果您使用struts标记,最好使用OGNL来计算表达式,而不是EL。强制OGNL计算整个表达式而不是部分

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

您也可以使用

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

这是为索引设置的整数值

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

<s:property value="%{yourListObject.get(#index).yourField}" />


是这样的字符串。使用Roman所说的
属性。像这样的东西调试起来很简单,因为您可以查看您设置的值的类型。@DaveNewton Right,该值保留该类型,但如果我正确,参数将转换为字符串并返回到值。参数是字符串,但即使不是,当值是param标记的主体时,它也始终是字符串。当它作为值属性进行求值时,它将作为ognl表达式的任何值进行求值