Comment obtenir à la fois l'étiquette et la valeur de f: selectItems
Je suis en train de travailler sur une page JSF qui a une liste déroulante basée sur List<SelectItem>
:
<h:selectOneMenu value="#{bean.selectedItem}">
<f:selectItems value="#{bean.availableItems}" />
</h:selectOneMenu>
J'ai besoin d'obtenir les deux la valeur et l'étiquette de l'élément actuellement sélectionné. Droit maintenant, je seulement obtenir la valeur. Comment puis-je obtenir le label, trop?
source d'informationauteur SomeFatMan
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas. C'est juste la façon dont fonctionne le HTML. Vous savez, JSF est un générateur de code HTML. La JSF
<h:selectOneMenu>
génère un code HTML<select><option>
. Le HTML<select>
élément ne envoyer levalue
de l'attribut sélectionné<option>
élément. Il ne sera pas envoyé son étiquette.Mais qui ne devrait pas être un gros problème. Vous avez à savoir déjà connaître à la fois la valeur et de l'étiquette dans le côté serveur, à l'intérieur de la
#{bean.availableItems}
. Tout ce que vous devez faire pour obtenir l'étiquette associée est de le faire par la valeur de la clé. Je suggère d'en faire unMap
qui, à son tour, peut également être utilisé dansf:selectItems
.De base de lancement pour exemple:
avec
et en conséquence
Une alternative consiste à envelopper à la fois le nom et la valeur d'un javabean objet représentant une entité et l'ensemble de l'objet en tant que valeur, par l'intermédiaire d'un convertisseur.
Voir aussi:
selectOneMenu
de la page wikiAu lieu d'Utiliser la Carte, j'ai essayé comme ça et il est parfaitement travailler pour moi d'obtenir à la fois ItemValue et ItemLabel dans la même propriété à l'aide de "ItemValue" attribut dans selectItems tag.Comment jamais fourni sans supplément de virgules dans le ItemLabel(@asfas....j'ai eu le même problème u mentionné j'ai donc choisi cette approche).
Fondamentalement IssueDesc est de type Chaîne de Haricot Société
Que si la valeur doit être un Entier et l'étiquette de la Chaîne et les deux sont nécessaires à la sauvegarde de haricot. À l'aide de la Carte sur le haricot ne fonctionne pas parce que JSF interprète la carte clé comme étiquette. Idéalement, il serait une LinkedHashMap et de recherche dans le texte par un numéro.
Semble à l'envers pour le nombre de recherche (valeur) par un texte (à clé). Que faire si certains de la mise en œuvre de l'ACI ajoute un espace supplémentaire pour tester ou de lettre en cas de modifications pour une raison quelconque. Ensuite, la valeur n'est pas trouvée à partir de la carte.
L'approche suivante peut également être utile dans l'obtention de la valeur et de l'étiquette à l'aide de List <SelectItem>:
Ici, la façade, les statesFacade extrait de la liste des états à partir de la base de données/haricot d'entreprise.
Dans la vue (page xhtml):
Dans le Managed Bean(applicationBean1.java):
Cela fera l'affaire.
Dans votre exemple, vous voulez passer dans le availableItems "liste" et selectedItem comme "sélection". Cette méthode retourne la valeur de l'étiquette correspondant à la selectedItem.