Dans un formulaire, j'ai un inputText avec deux bouton de commande, un pour accepter et un pour annuler. Comment peut désactiver la validation que pour le bouton d'annulation?
<h:form id="detailsForm">
<p:inputText id="editUsername" value="#{userController.editUser.usrUsername}" />
<p:inputText id="editFirstName" value="#{userController.editUser.usrFirstName}" />
<p:inputText id="editLastName" value="#{userController.editUser.usrLastName}" />
<p:commandButton value="Accept" update=":detailsForm" actionListener="#{userController.onDetailsEditAccept}" />
<p:commandButton value="Cancel" update=":detailsForm" actionListener="#{userController.onDetailsEditCancel}" />
</h:form>
J'ai déjà essayé d'insérer required="false"
sur des champs mais cela n'a pas fonctionné . J'ai également essayé d'insérer <f:validateBean disabled="true" />
sur des champs et cela n'a pas fonctionné.
Utilisez l'attribut immediate="true"
dans votre annulation commandButton
. Cela ignorera le traitement complet du formulaire, en supprimant les Appliquer les valeurs de demande , Process Validations et Update Model Values phases.
<p:commandButton value="Cancel" update=":detailsForm" actionListener="#{userController.onDetailsEditCancel}" immediate="true"/>
Utilisez l'attribut process="@this"
dans le bouton Annuler. Cela empêchera que le formulaire entier soit soumis.
Ou vous pouvez utiliser p:button
à la place (cependant, il n'a pas l'attribut actionListener
). Voir cet autre Q/A
si vous ne voulez pas soumettre le formulaire. Vous devriez utiliser uniquement le <p:button>
. le <p:commandButton>
soumet le formulaire.
<p:button value="delete All"
action="#{reloadBean.purge}" update="@form"/>