struts2 jstl迭代器标记

问题描述

| 我一直在寻找如何在struts2 jstl中实现某件事的方法,但是对我来说这是不可能的。 当我从动作加载jsp页面时,我有一个String列表列表。 我想将divs创建为具有列表的元素,但是在每个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]} \”次的地方... 有人可以帮助我吗? 预先非常感谢您, 阿莱克斯     

解决方法

        确保您的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>
    ,        适当时应使用
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指南->标记参考-> s:iterator