web-dev-qa-db-fra.com

PrimeFaces désactive la validation sur le bouton d'annulation

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é.

20
Paolo Dragone

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"/>
28
Fritz

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

13
perissf

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"/>
0
zedtimi