p:commandbutton action ne fonctionne pas à l'intérieur de p:dialogue
J'ai un p:dialogue et il y a un panneau à l'intérieur. Le problème, c'est le bouton "Enregistrer" de la méthode d'action n'est pas de travail. Il n'a même pas les appels de la méthode. Je peux arriver à la méthode def. avec ctrl+lm donc il n'y a pas de problème avec le nom de la méthode.
<h:body>
<h:form id="createAppUserForm" prependId="false">
....
<p:dialog id="newRoleDialogId"
header="Add New Role"
resizable="true"
draggable="true"
widgetVar="newRoleDetailsDialog"
appendToBody="true"
>
<p:panel id="newRoleDialogPanel">
<p:panelGrid id="newRoleDialogPanelGrid" columns="2" style="width: 100%" styleClass="panelGridWithoutBorder">
<h:outputText value="Role Name :"/>
<p:inputText value="#{createAppUserController.selectedRole.name}"/>
<h:outputText value="Role Desc :"/>
<p:inputText value="#{createAppUserController.selectedRole.description}"/>
</p:panelGrid>
<center>
<p:commandButton value="Save"
update="roleListDataTable newRoleDialogPanelGrid growlCreateAppUser"
oncomplete="if (!args.validationFailed) newRoleDetailsDialog.hide()"
action="#{createAppUserController.saveNewRole()}"/>
<p:commandButton value="Cancel"
immediate="true"
onclick="newRoleDetailsDialog.hide()" />
</center>
</p:panel>
</p:dialog>
</h:form>
</h:body>
- Où est le formulaire? Comment avez-vous l'intention de proposer quelque chose sans forme?
- Je pense que vous devez envelopper la
<p:commandButton />
les balises par<p:form>
tag. - J'ai édité. Je ne comprends toujours pas quel est le problème. Ai-je besoin d'ajouter un "processus" attribut?
- Dans le cas où le appendToBody attribut n'est pas utilisé. Avoir la boîte de dialogue à l'intérieur de la forme devrait être ok, n'est-ce pas ?
Vous devez vous connecter pour publier un commentaire.
La boîte de dialogue, lorsqu'il est utilisé avec un
appendToBody/appendTo="@Body"
doit avoir sa propre fiche.Parce que, quand le dialogue est généré dans la sortie HTML, c'est en JavaScript déménagé à la fin de HTML
<body>
qui le fait de ne pas être assis dans une forme plus. Le code HTML généré arborescence DOM finit par ressembler à ceci (utilisation du navigateur outils de dev pour le voir):La
appendToBody="true"
joue un rôle ici. La fin du corps assure facile et le meilleur de compatibilité du navigateur d'afficher une boîte de dialogue modale par JavaScript.La même chose est vraie par la voie d'un
p:overlayPanel
avec unappendTo...
Mais aussi assurez-vous, avant que le "mouvement" de la
p:dialog
, il n'est pas imbriquéeh:form
. Afin de prévenirDepuis bien qu'il se termine comme
c'est d'abord du code html non valide
Voir aussi:
<center>
(qui est obsolète depuis HTML 4.01 en 1998, vous ne devez jamais utiliser<center>
de nos jours).essayer cette p:remoteCommand
http://www.primefaces.org/showcase/ui/ajax/remoteCommand.xhtml
c'est mon exemple
La appendToBody="true" joue un rôle ici. Cet attribut ont été retirés de la plus récente version. S'il vous plaît regardez pour les autres alternatives