C:choose c:when test não acessa o Bean

Pessoal,

Estou tentando utilizar o choose para determinar o tipo de questão de um questionário.
Porém, apesar de UM dos métodos unicaEscolha, multiplaEscolha e subjetiva retornar true, sempre está caindo no otherwise.
Alguém sabe onde estou errando?

Abraço

<rich:dataTable value="#{entrevistaHandler.listaQuestao}" var="que" id="DTEntrevista" width="100%" cellspacing="0" cellpadding="0" border="1">
	<c:choose>
	    <c:when test="${que.tipoQuestao.unicaEscolha}" >
		    Única Escolha
	    </c:when>
	    <c:when test="${que.tipoQuestao.multiplaEscolha}">
		    Múltipla Escolha
	    </c:when>
	    <c:when test="${que.tipoQuestao.subjetiva}">
		    Subjetiva
	    </c:when>
	    <c:otherwise>
		<br /><h:outputText value="FALHA! Tipo de questão não cadastrada!" style="font-size: 18px;font-weight: bold;" />
		<br /><h:outputText value="#{que.tipoQuestao.unicaEscolha}" style="font-size: 18px;font-weight: bold;" />
	    </c:otherwise>
	</c:choose>
</rich:dataTable>

Você está utilizando JSF misturado com JSTL, e isso não é muito bom… provavelmente o erro ocorre porque os componentes JSF são processados em um momento diferente da parte JSP/JSTL. *

Uma solução seria usar JSF puro OU jsp/jstl puro (dependendo de como é o projeto)

Para usar apenas JSF, substitua o choose/when/otherwise por:

<h:outputText rendered="#{que.tipoQuestao.unicaEscolha}" value="Única Escolha" /> <h:outputText rendered="#{que.tipoQuestao.multiplaEscolha}" value="Múltipla Escolha" /> etc....
Para usar só JSP, faça o loop usando a tag c:for


  • OBS: Apesar de dizerem que as novas versões do Faces são compatíveis com JSP/JSTL eu não me sinto muito confortável em usar…