Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 在scriptlet数组索引中访问struts迭代器的索引值_Java_Jsp_Struts2_Ognl - Fatal编程技术网

Java 在scriptlet数组索引中访问struts迭代器的索引值

Java 在scriptlet数组索引中访问struts迭代器的索引值,java,jsp,struts2,ognl,Java,Jsp,Struts2,Ognl,我是网络开发的新手。使用Struts2,我有一个逗号分隔的字符串。当迭代要在JSP上呈现的图像时,我需要显示标题以及特定的图像,并且无法获得任何特定的标记来拆分标题Stringover delimiter并访问特定的标题。我正在尝试下面的代码,不知道用什么来代替迭代器中的某些东西来获取当前迭代索引 <s:iterator value="images" status="incr"> <%= ((String)request.getAttribute("imageCapti

我是网络开发的新手。使用Struts2,我有一个逗号分隔的
字符串
。当迭代要在JSP上呈现的图像时,我需要显示标题以及特定的图像,并且无法获得任何特定的标记来拆分标题
String
over delimiter并访问特定的标题。我正在尝试下面的代码,不知道用什么来代替迭代器中的某些东西来获取当前迭代索引

<s:iterator value="images" status="incr">  
  <%= ((String)request.getAttribute("imageCaptionsString")).split(",")[something]%>
</s:iterator>

我知道不建议在JSP中使用Scriptlet和表达式标记,但我不知道如何避免它


任何帮助都将不胜感激。

当前迭代索引可通过
s:iterator
标记的
status
属性获得。在您的情况下是
#incr.index
。如果要显示该索引

<s:iterator value="images" status="incr"> 
  <s:property value="%{#incr.index}"/>

然后scriplet可以更改为OGNL表达式

<s:property value='#attr.imageCaptionsString.split(",")[%{#incr.index}]'/>

这应该可以

<s:iterator value="imageCaptionsString.split(",")">  
    <s:property/>
</s:iterator>


如果这不起作用,那么可能是因为它是一个请求属性&因此,不能直接在valueStack上使用,在这种情况下,您可以使用
#attr.imageCaptionString
,而不是迭代器中的普通
imageCaptionString

在苦苦挣扎之后,在Roman C先生建议的答案的帮助下,我得到了解决方案,并保留在这里,以备将来有需要的用户使用

<s:iterator value="images" status="incr">  
  <%= ((String)request.getAttribute("imageCaptionsString")).split(",")[something]%>
</s:iterator>
<s:iterator value="images" status="incrementer">
  <s:set var="cnt" value="%{#incrementer.index}" />
  <s:property value="#attr.imgCaptions.get(#cnt)"/>
</s:iterator>


这样我就得到了标题。感谢Roman C先生。

是的,关于Scriptlet,您是对的,但是“表达式标记”是什么意思?表达式标记用于计算和显示用于此目的的表达式,请使用OGNL。不走运!它没有显示任何内容,没有任何错误。这里的attr是什么?value=“#attr.imageCaptionString”提供了整个标题字符串,但split方法不起作用。有什么建议/想法吗?我已经对表达式进行了更新,你能检查一下它是否有效吗?