Réinitialiser les champs de saisie sans exécuter de validation
J'ai un Facelets vue comme ci-dessous:
<h:form id="f1">
<p:panelGrid id="p1" columns="2">
<p: inputText value="Distance Travelled::/><p:inputText value="#{airTransportUsage.distance}" immediate="true"
required="true" requiredMessage="Distance Travelled Field cannot be left blank.."
converterMessage="Distance Travelled must be a number"
validatorMessage="Distance Travelled must be a valid number.."
id="dis">
<f:validateLongRange minimum="1"/>
</p:inputText>
<p:commandButton value="Reset" action="#{airTransportUsage.reset}" update=":f1:p1" />
</p:panelGrid>
</h:form>
Lorsque le bouton est cliqué, la méthode ne peut être exécutée à cause de validation. Je ne peux pas utiliser immediate="true"
sur mon bouton de réinitialisation comme il en crée d'autres problèmes.
source d'informationauteur Basuz
Vous devez vous connecter pour publier un commentaire.
La
<p:commandButton>
processus, en effet, par défaut, la totalité du formulaire (process="@form"
), vous pouvez changer cela en spécifiant uniquement le composant en cours dans leprocess
attribut.Cependant, ceci ne fonctionnera pas si le formulaire a déjà été validé au préalable. Les champs de saisie qui ont été marqués comme non valide ne seront pas mis à jour avec la nouvelle valeur de modèle (ce que vous avez réinitialisé vous-même). Si vous êtes à l'aide de PrimeFaces 3.4, puis incorporez
<p:resetInput>
dans le bouton:Si vous n'êtes pas sur PrimeFaces 3.4 encore et ne pouvez pas mettre à niveau, vous pouvez utiliser OmniFaces
ResetInputAjaxActionListener
pour cela.Un de complètement différent alternative est juste actualiser la page actuelle par une nouvelle requête GET.
Cela a fonctionné pour moi dans PrimeFaces 5.3
Vous pouvez probablement remplacer le
"@form"
cible de la mise à jour de l'attribut d'un composant spécifique si vous le souhaitez.