为什么此代码会生成错误“结束标记”< / c:何时“不平衡”?

时间:2011-12-26 01:40:27

标签: java jsp spring-mvc jstl

我不明白为什么会收到错误:

  

结束标记“< / c:when”不平衡

运行此代码时:

<c:choose>
    <c:when test="${label == 'Apple'}">
        <form:form modelAttribute="fruit" action="/fruit/${fruitId}" method="post">                 
        <form:input path="fruitId" type="hidden" value="${fruitId}"/>
    </c:when>
    <c:when test="${label == 'Orange'}">
        <form:form modelAttribute="fruit" action="/fruit/${fruitId}" method="post">
        <form:input path="fruitId" type="hidden" value="${fruitId}"/>
    </c:when>               
</c:choose>

3 个答案:

答案 0 :(得分:7)

您有一个未公开的<form:form>标记。

答案 1 :(得分:0)

在我的情况下,我发现问题是使用html注释语法来注释掉JSTL代码。因此,重新检查包含JSTL语法的html文件,以检查是否已经犯了同样的错误。 请参阅以下示例:

<!-- <security:authorize access="hasAnyRole('ASSOC_COMPANY','PUBLIC_COMPANY', 'INDIVIDUAL')"> -->

将上述评论更改为以下评论。

<%-- <security:authorize access="hasAnyRole('ASSOC_COMPANY','PUBLIC_COMPANY', 'INDIVIDUAL')"> --%>

答案 2 :(得分:0)

对我来说,我忘记了关闭JSTL标签。

这是我应该修复的地方

<c:set var="attendance" value="${hallManager.selectAttandanceRegisterByAttID()}" >

在我更改为这个之后就可以了。

<c:set var="attendance" value="${hallManager.selectAttandanceRegisterByAttID()}" />

<c:set var="attendance" value="${hallManager.selectAttandanceRegisterByAttID()}" ></c:set>

一些技巧可以快速解决此问题: 如果您有像Netbeans这样的IDE,请尝试 1.折叠所有标签,然后展开一个标签,查看未关闭的标签。 2.键入“,然后查看弹出菜单(如果已启用)。如果有未关闭的标签,它将显示。