У меня есть следующий код на моей странице 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"/>
, тогда все работает нормально (Я пока не использую функцию «выпадающий».Я предполагаю, что это связано со способом синтаксического анализа xhtml.
Существует (простой / стандартный) способ решения / обхода этой проблемы или лучше поместить эту логику в класс Java насервер?