1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Omitir f:selectItem dentro de um h:selectOneRadio com condição

Tenho o seguinte código:


<p:dataTable id="tabelaResult"               style="width:100%;"
                                             value="#{minhaContaHandler.repostas}"
                                             var="item"
                                             rowIndexVar="index"
                                             >

<p:column>  

<h:selectOneRadio value="#{item.respostaint}">                                                      

 <f:selectItem  itemLabel="#{item.pergunta.op1}" itemValue="1" />                                                

 <f:selectItem  itemLabel="#{item.pergunta.op2}" itemValue="2" />                                                

 <f:selectItem  itemLabel="#{item.pergunta.op3}" itemValue="3" />

 <f:selectItem  itemLabel="#{item.pergunta.op4}" itemValue="4" />                                                

 <f:selectItem  itemLabel="#{item.pergunta.op5}" itemValue="5" />     

 <f:selectItem  itemLabel="#{item.pergunta.op6}" itemValue="6" />

</h:selectOneRadio>

Gostaria de omitir um selectItem quando o Label dele for vazio.

Tentei primeiro usar o rendered mas li que ele não funciona, vi que preciso usar o c:if , tentei usar de várias formas mas em nenhum funcionou:

<h:selectOneRadio value="#{item.respostaint}">                                                      
    <c:if test="${item.pergunta.op1 == ''}">
             <f:selectItem  itemLabel="#{item.pergunta.op1}" itemValue="1" />
    </c:if>
    <c:if test="#{item.pergunta.op2 == ''}">
             <f:selectItem  itemLabel="#{item.pergunta.op2}" itemValue="2" />
    </c:if>
    <c:if test="#{item.pergunta.op3 eq not ''}">
             <f:selectItem  itemLabel="#{item.pergunta.op3}" itemValue="3" />
    </c:if>
    <c:if test="#{item.pergunta.op4 eq not ''}">
             <f:selectItem  itemLabel="#{item.pergunta.op4}" itemValue="4" />                                                
    </c:if>
    <c:if test="#{item.pergunta.op5 eq not ''}">
             <f:selectItem  itemLabel="#{item.pergunta.op5}" itemValue="5" />     
    </c:if>
    <c:if test="${item.pergunta.op6 eq not ''}">
             <f:selectItem  itemLabel="#{item.pergunta.op6}" itemValue="6" />
    </c:if>    
</h:selectOneRadio>

Teria alguma outra forma? Obrigado!

[UPDATE]

Tentei fazer o seguinte:

<h:selectOneRadio value="#{item.respostaint}" hideNoSelectionOption="true">   

   <h:outputText value="#{item.op1Preenchido}"/> // esta imprimindo true
   <h:outputText value="#{item.op6Preenchido}"/> // esta imprimindo false

   <c:if test="#{item.op1Preenchido}">
      <f:selectItem  itemLabel="#{item.pergunta.op1}" itemValue="1"/>                                                    
   </c:if>

   <f:selectItem  itemLabel="#{item.pergunta.op2}" itemValue="2" />

   <f:selectItem  itemLabel="#{item.pergunta.op3}" itemValue="3" />

   <f:selectItem  itemLabel="#{item.pergunta.op4}" itemValue="4" />                                                

   <f:selectItem  itemLabel="#{item.pergunta.op5}" itemValue="5" />     

   <c:if test="#{item.op6Preenchido}">
      <f:selectItem  itemLabel="#{item.pergunta.op6}" itemValue="6" />
   </c:if>
</h:selectOneRadio>

No xhtml a tag <h:outputText value="#{item.op1Preenchido}"/> imprime um TRUE e a tag <h:outputText value="#{item.op6Preenchido}"/> imprime FALSE.

Do jeito que está nenhum dos dois (item1 e item6) aparecem.

Se eu seto manualmente <c:if test="true"> para o item1 e <c:if test="false"> para o item6 , aí sim ele fica do jeito que deveria.

Realmente não sei o que está acontecendo.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf java javascript ou faça a sua própria pergunta.