problème de validation avec la JSF h:forme et PrimeFaces p:dialogue
J'ai une page JSF qui est fondamentalement un créer un formulaire. Le formulaire se compose d'une variété de champs d'entrée et également une liste de sous-éléments.
Pour ajouter un sous-élément, vous cliquez sur "ajouter un élément" lien qui ouvre une boîte de dialogue à l'aide de la PrimeFaces p:boîte de dialogue de la balise. Il est similaire au panneau de connexion de démonstration sur les faces principales de la page ici, avec le p:growl les messages de validation:
http://www.primefaces.org/showcase/ui/dialogLogin.jsf
Mon problème est que quand je clique sur "ajouter" dans la boîte de dialogue je vois growl les messages de validation pour les champs dans la boîte de dialogue et les champs dans le formulaire principal. Je ne veux voir les messages de la boîte de dialogue.
Est-il un moyen de faire cela? J'ai essayé de l'incorporation d'un formulaire dans un formulaire, mais il ne fonctionne pas. C'est, je l'ai essayé ...
<h:form>
<p:messages /> <!-- show validation messages for create form contents -->
<h:inputText value .../>
<h:dataTable value .../> <!-- list of sub elements -->
<h:commandLink "shows the add element dialog" ... />
<p:growl /> <!-- shows the validation messages for dialog contents -->
<p:dialog>
<h:form>
<h:inputText value .../>
<p:commandButton "validate dialog box fields then add the item to the list" .../>
</h:form>
</p:dialog>
</h:form>
... mais cela ne fonctionne pas. Toute aide est grandement appréciée!
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, c'est que vous ne pouvez pas insérer un formulaire dans un autre. Je pense qu'il n'est pas valide html.
p:growl
se comporte commeh:messages
. Il affiche des messages pour tous les éléments de la page (non limitée à un formulaire). Vous pouvez en limiter mondiale que les messages (les messages sansid
) par la mise en auglobalOnly="true"
attribut.Changer votre bouton de commande pour mettre à jour uniquement les
p:growl
et assurez-vous que c'est une requête ajax qui est déclenché par votre bouton de commande (ajax=true
). Lep:commandButton
aajax=true
comme comportement par défaut. Donc, si vous n'avez pas modifié de façon explicite, il s'agit d'une requête ajax.