JSTL:嵌套<c:if>用于比较两个不起作用的字符串</c:if>

时间:2014-03-11 17:15:58

标签: jsp jstl

在我的webapp(基于spring mvc)中,我有一个JSP页面,其中包含以下代码:

    <c:forEach var="item2" items="${lista_hora}">
<tr>
    <td>
        <c:out value="${item2.hora}"/>
    </td>

    <c:forEach var="item" items="${lista_data}">
    <td>
            <c:set var="isChecked" value="${false}"/>
            <c:forEach var="user" items="${lista_horarios}">
                <c:if test="${item2.hora == user.hora}">
                    <c:if test="${item.data == user.data}">
                        <c:set var="isChecked" value="${true}"/>
                    </c:if>
                </c:if>
            </c:forEach>

            <input type="checkbox" <c:if test="${isChecked}">checked="checked"</c:if> id="cb_001_${item.id}_${item2.id}">

            <script>
                $("#cb_001_${item.id}_${item2.id}").click(function(){
                    $.ajax({
                          url: "cad_horario.html",
                          data: { data: "${item.original}", hora: "${item2.original}" },
                          cache: false
                        }).done(function(data) {
                            $("#result_1").empty().append( data );
                        });
                });
            </script>       
    </td>
    </c:forEach>
</tr>
</c:forEach>

问题在于上面的循环。该页面显示一个矩阵,其中列是日期,行是时间间隔。因此,每个复选框都是一对(日期,时间)。页面从服务器接收三个列表:日期,时间之一,以及用户在上一个会话中标记的对中的其中一个

循环所要做的是使用已标记的先前对的矩阵。但这不会发生。有人可以在这段代码中看到任何错误吗?

1 个答案:

答案 0 :(得分:0)

好的,我解决了这个问题。发生getter方法的onde返回错误的值。更改此代码后,页面工作正常。对我来说,请继续吸取教训,更加关注这些细节。