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表达式的任何值进行求值