p:commandbutton action funktioniert nicht im inneren von p:dialog
Habe ich eine p:dialog und es ist ein panel drin. Das problem ist der button "Speichern" wird die action-Methode nicht funktioniert. Es schadet auch nicht, der die Methode aufruft. Kann ich erreichen, die Methode def. mit Strg+lm so ist es kein problem mit der Methode name.
<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>
- Wo ist das Formular? Wie haben Sie die Absicht, etwas zu Unterwerfen, ohne ein Formular?
- Ich denke, Sie sollten wickeln Sie das
<p:commandButton />
tags<p:form>
tag. - Ich bearbeitet habe. Ich verstehe immer noch nicht, was das problem ist. Muss ich hinzufügen "Prozess" - Attribut?
- Im Falle der appendToBody-Attribut wird nicht verwendet. Dass der dialog innerhalb der form sollte ok sein, nicht ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den dialog, wenn verwendet mit ein
appendToBody/appendTo="@Body"
muss haben Ihre eigene form.Weil, wenn das Dialogfeld erzeugt in der HTML-Ausgabe durch das JavaScript verlegt an das Ende des HTML -
<body>
die bewirkt, dass es nicht sitzen in irgendeiner form mehr. Die generierten HTML-DOM-Baum endet wie folgt (verwenden Sie Browser-dev-tools, um es zu sehen):Den
appendToBody="true"
eine Rolle spielt, hier. Das Ende von Körper sorgt einfach und am besten cross-browser-Kompatibilität, der Anzeige eines modalen dialogs per JavaScript.Das gleiche gilt übrigens für eine
p:overlayPanel
mit einemappendTo...
Aber auch sicherzustellen, dass es ist, vor dem "Umzug" der
p:dialog
es ist nicht eine verschachtelteh:form
. So verhindernDa, obwohl es endet wie
ist es zunächst ungültigen html -
Siehe auch:
<center>
(das ist übrigens veraltet seit HTML 4.01 im Jahr 1998, Sie sollten nie<center>
heute).versuchen, diese p:remoteCommand
http://www.primefaces.org/showcase/ui/ajax/remoteCommand.xhtml
dies ist mein Beispiel
Den appendToBody="true" spielt eine Rolle hier. Dieses Attribut wurde entfernt in der neuesten version. Bitte schauen Sie für andere alternative