【问题标题】:JSTL: Nested forEach loop. Contents not displaying in individual rowsJSTL:嵌套 forEach 循环。内容未显示在单独的行中
【发布时间】:2017-08-23 04:19:55
【问题描述】:
    <table>
        <c:forEach var="moviesFromAGenre" items="${moviesFromRandomGenres}">
            <tr>
            <c:forEach var="movie" items="${moviesFromAGenre}">
                <td>
                    <a href="getMovie?selected=<c:out value="${movie[0]}"/>" >
                        <img src="<c:out value="${movie[1]}"/>"  WIDTH="200" HEIGHT="300" BORDER="0"/>
                    </a>
                </td>
            </c:forEach>
            </tr>
        </c:forEach>
    </table>

内容显示如下:

1

2

3

4

5

...

代替:

1 2 3 4 5

5 6 7 8 9

我尝试在第一个 forEach 之后使用
,它产生了相同的结果。

【问题讨论】:

    标签: java html css jsp jstl


    【解决方案1】:

    您不想使用&lt;br&gt;,因为您正在使用&lt;table&gt;,这可以通过更改&lt;tr&gt; 的位置来格式化为您的要求

    使用浏览器开发工具检查生成的 html

    【讨论】:

    • 我进行了检查,尽管 tr 标签位于内部循环之外,但它正在为每个条目生成一个新的表格行。
    • 所以您的源数据可能不正确,您有 10 个 moviesFromRandomGenres 和单个 moviesFromAGenre 而不是(预期?)2 moviesFromRandomGenres 和 5 个 moviesFromAGenre
    【解决方案2】:

    试试这个。

            <c:forEach var="moviesFromAGenre" items="${moviesFromRandomGenres}">
              <h:panelGrid columns="${moviesFromAGenre.size()}">
                <c:forEach var="movie" items="${moviesFromAGenre}">                  
                        <a href="getMovie?selected=<c:out value="${movie[0]}"/>" >
                            <img src="<c:out value="${movie[1]}"/>"  WIDTH="200" HEIGHT="300" BORDER="0"/>
                        </a>                   
                </c:forEach>
              </h:panelGrid>
            </c:forEach>
    

    【讨论】:

    • 更新了答案
    • panelGrid 到底跟这个问题有什么关系?
    • @ScaryWombat,我们可以通过使用 h:panelGrid 解决上述问题,这就是我在这里发布的原因。
    • 但是 OP 并没有表明他正在使用 JSF 或其他什么
    • @ScaryWombat,我只是建议他使用 h:panelGrid,因为他已经在使用 c:forEach。
    猜你喜欢
    • 2012-05-28
    • 2015-07-15
    • 1970-01-01
    • 2019-09-24
    • 2019-02-09
    • 2018-07-15
    • 2016-10-13
    • 2013-03-07
    • 1970-01-01
    相关资源
    最近更新 更多