JSTL嵌套foreach循环未打印输出

3

我目前正在处理一个项目,从一个 Servlet 中接收一个 Map 对象的 ArrayList,在 JSP 页面中进行翻译。它的工作方式是当页面被拉起时,通过 jquery 发送 AJAX 调用到 Servlet,Servlet 会返回所需的 Map 列表响应。问题在于,页面加载后,我试图基于 Map 对象中的值构建表格。 我的代码似乎有点效果。 在使用 firebug 查看 XHR 响应时,我可以看到所期望的页面中出现了正确的标签(即 tr 和 td 标签)。 但是当我尝试在浏览器中查看页面并使用 "查看源代码" 时,只能看到通过手动创建的 HTML,而无法看到在 forEach 循环中将创建的 HTML。

    <table>
            <tr>
                <th>Home</th>
                <th>Away</th>
            </tr>
            <c:forEach var="currentTeam" items="${GamesList}">
                <tr id="game">
                <c:forEach var="currentGame" items="${currentTeam}">
                    <c:if test="${currentGame.key eq 'Home' }">
                        <td>${currentGame.value}</td>
                    </c:if>
                    <c:if test="${currentGame.key eq 'Visitor' }">
                        <td>${currentGame.value }</td>
                    </c:if>
                </c:forEach>
                </tr>
            </c:forEach>
        </table>

我正在使用的代码如下,它本身被包含在一个div标签中。不确定是否有帮助,但是这个div只会在用户点击打开Jquery弹出窗口的按钮时显示。非常感谢您的帮助。
在Firebug中查看的XHR响应如下:
              <tr><td>New York Giants</td><td>Dallas Cowboys</td></tr>
                <tr><td>Chicago Bears</td><td>Indianapolis Colts</td></tr>
                <tr><td>Minneosta Vikings</td><td>Jacksonville Jaguars</td></tr>
                <tr><td>New York Jets</td><td>Buffalo Bills</td></tr>
                <tr><td>Houston Texans</td><td>Miami Dolphins</td></tr>
                <tr><td>Tennessee Titans</td><td>New England Patriots</td></tr>
                <tr><td>Detroit Lions</td><td>St. Louis Rams</td></tr>
                <tr><td>New Orleans Saints</td><td>Washington Redskins</td></tr>
                <tr><td>Cleveland Browns</td><td>Philadelphia Eagles</td></tr>
                <tr><td>Kansas City Chiefs</td><td>Atlanta Falcons</td></tr>
                <tr><td>Green Bay Packers</td><td>San Francisco 49ers</td></tr>
                <tr><td>Arizona Cardinals</td><td>Seattle Seahawks</td></tr>
                <tr><td>Tampa Bay Buccaneers</td><td>Carolina Panthers</td></tr>

为了简洁起见,以下是“查看源代码”的内容:

                <table>
            <tr>
                <th>Home</th>
                <th>Away</th>
            </tr>

在ajax调用之前,GamesList是否存在? - Pao
你能展示一下ajax调用吗? - Pao
好吧,看起来我甚至无法通过脚本访问数据...这就引出了一个问题:“为什么?”因为正如我所说,当我通过Firebug的“Net”功能查看传入的数据时,我可以看到所有数据都以正确的格式存在,并且按照预期显示在XHR响应中。 - djdgel
这是我得到的堆栈跟踪。我想这会有所帮助。 “堆栈跟踪: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:471) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)” - djdgel
1
@djdgel 如果其他用户遇到类似问题,你可以把解决方案作为答案发布(并接受),如果你愿意的话。 - Pao
显示剩余8条评论
1个回答

0

在Servlet中打印列表,将结果设置为div内容,如下所示

$("button").click(function(){
    $.ajax({url: "\ServletCall", success: function(result){
        $("#div1").html(result);
    }});
});

<table>
            <tr>
                <th>Home</th>
                <th>Away</th>
            </tr>
<div id="div1"></div>
</table>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接