Oi pessoal,
estou tentando montar um menu dinâmico com o RichFaces.
Criei um componente com o facelets e estou passando um List #{lista} como parâmetro.
Vejam o codigo abaixo:
<f:view>
<h:form>
<h:panelGrid columns="2">
<c:forEach var="itemmenu" items="#{lista}">
<c:choose>
<c:when test="#{itemmenu.tipo == 1}">
<rich:dropDownMenu value="#{itemmenu.nome}">
</c:when>
<c:when test="#{itemmenu.tipo == 2}">
<rich:menuGroup value="#{itemmenu.nome}" >
</c:when>
<c:when test="#{itemmenu.tipo == 3}">
<rich:menuItem value="#{itemmenu.nome}" />
</c:when>
<c:when test="#{itemmenu.tipo == 4}">
<rich:menuSeparator />
</c:when>
<c:when test="#{itemmenu.tipo == 5}">
</rich:dropDownMenu>
</c:when>
<c:when test="#{itemmenu.tipo == 6}">
</rich:menuGroup>
</c:when>
</c:choose>
</c:forEach>
</h:panelGrid>
</h:form>
</f:view>
Será executado um forEach em cima da lista e dependendo do tipo do menu será aberto um tag de DropDown, MenuGroup ou fechada.
Fiz alguns testes apenas imprimindo através de um outputText o #{itemmenu.tipo} e confirmei que a sequencia de menus está correta.
Mas quando vou executar o código ao abrir a janela é gerado o erro:
SEVERE: Error Rendering View[/modulos/gerenciadoridentidade/gerenciadoridentidade.xhtml]
com.sun.facelets.FaceletException: Error Parsing /tagslib/menuModulo.xhtml: Error Traced[line: 19] The element type "rich:dropDownMenu" must be terminated by the matching end-tag "</rich:dropDownMenu>".
Eu penso que antes de interpretar o código, o parser passa pelo código e identifica que existem tags abertas e não fechadas, dando um erro logo na primeira. Mas analisando o código sabemos que ao executar funcionará corretamente.
Alguém sabe como resolver isso?
O erro é mesmo o que estou pensando?
Valeu.
