j'ai une question concernant une saisie semi-automatique Primefaces. Maintenant, je mets à jour un champ avec la valeur d'une propriété de la valeur sélectionnée dans la saisie semi-automatique, comme ceci:
C'est dans mon xhtml:
<p:autoComplete
value="#{trFitoModel.selectedProducte}"
id="nomComercial"
completeMethod="#{trFitoBacking.completeProducte}"
var="producte" itemLabel="#{producte.nom}"
itemValue="#{producte}" converter="#{ProducteFitoConverter}"
forceSelection="true"
onkeyup="this.value = this.value.toUpperCase();">
<p:ajax event="itemSelect"
listener="#{trFitoBacking.handleSelect}"
update="text" global="false" />
<f:validator validatorId="qea.validators.EmptyFieldValidator" />
<f:attribute name="validationTitle" value=" NomComercial " />
</p:autoComplete>
</p:column>
<p:column>
<h:outputLabel>#{msgI18N.trFito}</h:outputLabel>
<h:outputText id="text"
value="#{traFitoBacking.resgistre}">
</h:outputText>
</p:column>
Et voici mon Backing Bean:
public void handleSelect(SelectEvent event) {
ProducteFitosanitari p=(ProducteFitosanitari)event.getObject();
setResgistre(Integer.toString(p.getNumRegistre()));
}
Cela fonctionne, mais maintenant j'essaie de mettre à jour le outputText avec l'ID "text" avec une chaîne vide lorsque la valeur de la saisie semi-automatique est vide.
Comment puis-je capturer l'événement déclenché lorsque p:autoComplete
est vidé?
Primefaces autoComplete génère 2 événements: "change" et "itemSelect", pour 2 méthodes pour changer son contenu: taper ou sélectionner dans la liste déroulante. Vous devez donc enregistrer 2 p:ajax
auditeurs:
<p:autoComplete ... >
<p:ajax event="itemSelect" listener="#{bean.action}" process="@form"/>
<p:ajax event="change" listener="#{bean.action}" process="@form"/>
</p:autoComplete>
Vous aurez également besoin de la deuxième signature de méthode du serveur:
public void action(AjaxBehaviorEvent event)
pour capturer l'événement "change".
Au lieu de event
, vous pouvez utiliser l'attribut onstart
avec JavaScript pour exécuter ... Plus d'options pour p:ajax
vous trouverez dans Primefaces Users Guide, section "AjaxBehavior".