我一直在寻找如何在struts2 jstl中实现一个东西,但我无法找到方法。
当我从动作加载jsp页面时,我有一个String列表列表。
我想创建div作为元素有列表,但在每个div中,我想创建链接作为子列表的第三个元素。
所以我使用s:iterator标签来解析列表。但我不知道如何在第一个迭代器中迭代“$ {item [2]}”。
代码将是这样的:
<s:iterator value="functions" var="item" status="stat">
<span class="operation">${item[1]}</span>
<div id="${item[0]}">
<s:for var $i=0;$i<${item[2]};$i++>
<a href="#" id="link_$i">Link $i</a>
</s:for>
</div>
</s:iterator>
我把s:for标签放在哪里我想迭代“$ {item [2]}”次......
任何人都可以帮助我?
非常感谢您提前, Aleix
答案 0 :(得分:2)
确保您在JSP页面中的范围内有JSTL核心库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
只需使用<c:forEach>
即可。像这样:
<c:forEach var="i" begin="0" end="${item[2] - 1}">
<a href="#" id="link_${i}">Link ${i}</a>
</c:forEach>
答案 1 :(得分:1)
如果合适,您应该使用 List of Map
,例如:
动作类
// List of raw type Map
private List<Map> functions = Lists.newArrayList(); // with getter
@Override
public String execute() {
// loops {
Map map = Maps.newHashMap();
map.put("id", id);
map.put("operation", operation);
map.put("count", count); // count is int/Integer
functions.add(map);
// }
return SUCCESS;
}
<强>的.jsp 强>
<s:iterator value="functions">
<span class="operation">${operation}</span>
<div id="${id}">
<s:iterator begin="0" end="count - 1" var="link">
<a href="#" id="link_${link}">Link ${link}</a>
</s:iterator>
</div>
</s:iterator>
<小时/>
或<s:a />
(示例)
<s:a action="action_name" id="%{link}" anchor="%{link}">Link ${link}</s:a>
<强>输出强>
<a id="[id]" href="/namespace/action#[anchor]">Link [link]</a>
另见
Struts2 Guides - &gt; Tag Reference - &gt;的 s:iterator 强>