Comment utiliser Primefaces de saisie semi-automatique avec un POJO Liste et un POJO la propriété de la sélection de la valeur
Dans notre projet, nous voulons remplacer une <h:selectOneMenu>
avec Primefaces est <p:autocomplete>
. La sélectionnez les éléments sont d'une liste de Pojo (Entités JPA). La différence pour les exemples donnés dans primefaces vitrines est, que nous voulons la propriété de clé primaire (id) de l'entité de sélection de la valeur, de sorte qu'il peut être facilement transmis de visualiser les param:
<f:metadata>
<f:viewParam name="playerId" value="#{playerPreRenderViewListener.searchCriteria.playerId}" />
<f:viewParam name="year" value="#{playerPreRenderViewListener.searchCriteria.year}" />
</f:metadata>
<h:form>
<h:inputText value="#{playerPreRenderViewListener.searchCriteria.year}"/>
<p:autoComplete var="player" itemLabel="#{player.name}" itemValue="#{player.id}"
completeMethod="#{playerBean.completePlayer}" forceSelection="true"
converter="#{playerConverter}"
value="#{playerPreRenderViewListener.searchCriteria.playerId}">
</p:autoComplete>
<h:commandButton value="Submit" action="showTeam?faces-redirect=true&includeViewParams=true" />
</h:form>
Malheureusement l'exemple ci-dessus va conduire à une PropertyNotFoundException:
itemLabel="#{joueur.nom}": la Propriété 'name' non trouvé sur le type java.lang.Long'
Le problème est que le var
attribut est de Type Long
et pas Player
. Lors de l'utilisation d'un simple <h:selectMenu>
il fonctionne en conjonction avec <f:selectItems>
:
<f:selectItems var="player" value="#{playerBean.listPlayers}" itemLabel="#{player.name}" itemValue="#{player.id}" />
Quelqu'un sait comment gérer ce problème?
OriginalL'auteur fischermatte | 2012-03-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un backing bean méthode qui renvoie le joueur appartenant à la population active actuellement
playerId
et de définir cettecurrentPlayer
comme valeur de l'attribut de votre backing bean:Et dans la vue:
dans l'exemple ci-dessus vous dire
itemValue="#{player}"
je suppose (sans id)?Oui, mon erreur, j'ai corrigé.
Vous pouvez définir la
currentPlayer
dans l'incubateur pourplayerId
. Btw: qu'est-Ce que votre PlayerPreRenderViewListener? Est-ce une phase auditeur?u veuillez fournir l'extrait de code de playerConverter
OriginalL'auteur Matt Handy