Dans notre projet actuel, nous voulons remplacer un <h:selectOneMenu>
par <p:autocomplete>
de Primefaces. Les éléments sélectionnés sont une liste de Pojos (Entités JPA). La différence des exemples donnés dans primefaces showcases est que nous voulons que la propriété clé primaire (id) de l'entité en tant que valeur de sélection, de sorte qu'il peut être facilement passé en vue param:Comment utiliser Primefaces autocomplete avec une liste POJO et la propriété d'un POJO comme valeur de sélection
<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 conduira à une PropertyNotFoundException:
itemLabel = "# {player.name}": 'nom' propriété introuvable sur le type java.lang.Long »
Le p roblem est que l'attribut var
est de type Long
et non Player
. Lors de l'utilisation d'un simple <h:selectMenu>
cela fonctionne conjointement 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?
Pouvez-vous fournir un extrait de code de votre convertisseur de lecteur, s'il vous plaît? J'ai rencontré le même problème et je veux utiliser un convertisseur pour cela. – CSchulz