6

使用 Struts2,我String的图像标题用逗号分隔。在迭代图像以在 JSP 上呈现时,我需要显示标题以及特定图像,并且无法获得任何特定标签来将标题拆分为String分隔符并访问特定标题。我正在尝试下面的代码,但不知道用什么来代替某些东西来获取迭代器中的当前迭代索引。

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

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

4

3 回答 3

10

当前迭代索引可通过标签的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}]'/>
于 2013-11-08T11:26:16.340 回答
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 先生。

于 2013-11-09T05:01:18.430 回答
0

这应该做

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

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

于 2013-11-08T11:38:55.820 回答