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

时间:2013-11-08 10:04:53

标签: java jsp struts2 ognl

我是网络开发的新手。使用Struts2,我的逗号分隔String我的图像标题。在JSP上迭代要渲染的图像时,我需要显示标题以及特定图像,并且无法获得任何特定标记以将标题String拆分为分隔符并访问特定标题。我正在尝试下面的代码,不知道用什么代替迭代器中的当前迭代索引。

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

我知道不推荐在JSP中使用scriptlet和expression标签,但我不知道如何避免使用它。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:6)

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

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

然后scriplet可以改为OGNL表达式

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

答案 1 :(得分:1)

在经历了很多努力之后,在Roman C先生建议的答案的帮助下,我得到了解决方案并留在这里,以备将来任何有需要的用户使用。

<s:iterator value="images" status="incrementer">
  <s:set var="cnt" value="%{#incrementer.index}" />
  <s:property value="#attr.imgCaptions.get(#cnt)"/>
</s:iterator>

这样我就得到了字幕。感谢Roman C.先生。

答案 2 :(得分:0)

这应该

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

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