我的xhtml页面中有以下代码:
<c:forEach var="item" items="${menu}">
<c:choose>
<c:when test="${fn:startsWith(item.key, 'startDropdown.')}">
<c:set var="dropdown" scope ="session" value="true" />
<c:set var="dropdownnaam" scope ="session" value="${fn:substringAfter(item.key, 'startDropdown.')}" />
<li class="nav-item dropdown"><a id="${dropdownnaam}" href="#" role="button" class="nav-link dropdown-toggle" data-toggle="dropdown">#{i18nTeksten.tekst(item.value)}<b class="caret"></b></a>
<div class="dropdown-menu dropdown-menu-center" aria-labelledby="${dropdownnaam}">
</c:when>
<c:when test="${item.key.equals('endDropdown')}">
<c:set var="dropdown" scope ="session" value="false"/>
</div>
</li>
</c:when>
<c:when test="${dropdown.equals('true')}">
<a class="dropdown-item" href="#{item.key}">#{i18nTeksten.tekst(item.value)}</a>
</c:when>
<c:otherwise>
<li class="nav-item"><a class="nav-link" href="#{item.key}">#{i18nTeksten.tekst(item.value)}</a></li>
</c:otherwise>
</c:choose>
</c:forEach>
当使用它时,我得到以下错误:
错误跟踪行: 29元素类型"div“必须以匹配的结束标记"”结尾。
当我删除以下行(8-10)时
</c:when>
<c:when test="${item.key.equal('endDropdown')}">
<c:set var="dropdown" scope ="session" value="false"/>
然后一切正常(我还没有使用'dropdown‘功能)。我认为这与xhtml的解析方式有关。
有没有一种(简单/标准的)方法来解决/绕过这个问题,还是把这个逻辑放在服务器上的Java类中更好?
发布于 2018-05-31 15:23:03
如果
<c:when test="${item.key.equal('endDropdown')}">
为false,则没有end div
也许你想把它移到</c:when>
之后
或者为以上代码为false
时提供另一个when
标记
https://stackoverflow.com/questions/50618785
复制相似问题