2016-09-20 1 views
1

J'ai une valeur booléenne qui est définie par une balise de selectOneRadio comme suit:selectOneRadio avec la valeur NULL ne pas afficher correctement (Mojarra 2.1.28)

<h:selectOneRadio value="#{bean.someBoolean}"> 
    <f:selectItem itemValue="true" itemLabel="Yes"/> 
    <f:selectItem itemValue="false" itemLabel="No"/> 
    <f:selectItem itemValue="#{null}" itemLabel="Not applicable"/> 
</h:selectOneRadio> 

Il passe correctement ces valeurs à la fève, mais il se comporte étrangement lors de l'affichage de ces valeurs. Si le booléen est vrai, il sélectionne correctement le bouton radio 'Oui'. Si le booléen est faux, cependant, il sélectionne le bouton "Non applicable" et si le booléen est nul, il ne sélectionne rien du tout. Je l'ai testé avec <h:selectOneMenu> et cela fonctionne parfaitement bien. Que se passe t-il ici?

+0

Quelqu'un a de la chance avec ça? – Joe

Répondre

0

Spacejockey,

Si vous utilisez Boolean (type d'objet) pas de problème, mais si vous utilisez booléen (type primitif) vous ne pouvez pas attribuer une valeur nulle à votre variable.

Exemple:

private boolean booleanPrimitiveVar; //(can't be null) 
private Boolean booleanObjectVar; //(can be null) 

Dans votre changement XHTML vrai # {true} et même pour faux:

<h:selectOneRadio value="#{bean.someBoolean}"> 
    <f:selectItem itemValue="#{true}" itemLabel="Yes"/> 
    <f:selectItem itemValue="#{false}" itemLabel="No"/> 
    <f:selectItem itemValue="#{null}" itemLabel="Not applicable"/> 
</h:selectOneRadio> 

Je l'espère aider ...

Bonne chance!

+0

Merci pour votre commentaire. C'est en effet un booléen, mais ajouter "# {true}" au lieu de "true" ne semble pas faire de différence. – Spacejockey

+0

Vous avez correctement défini getter et setter pour la variable booléenne? Quelle est la méthode d'envoi de données à backbean? Grâce à un commandButton? Pourriez-vous mettre le code? –