Primefaces commandButton im inneren dialog nicht feuern backing-bean-Methode
Ich habe gerade angefangen zu lernen, JSF und PrimeFaces, und sobald ich ein problem zu lösen (mit eurer Hilfe), ein anderer entsteht. Ich habe eine datatable zeigt einige Daten für meine Anwendung Benutzer, der in der letzten Spalte, eine Befehlsschaltfläche startet ein dialog, in dem die entsprechenden Daten bearbeitet werden. Der dialog tatsächlich interagiert mit der backing-bean, da die Felder korrekt vorkompilierte mit den vorhandenen Daten, aber die "änderungen Senden" commandButton nicht das Feuer die richtige editUser()
Methode!
Ich habe überall gesucht nach einer Lösung für mein problem, aber keiner der threads auf der PrimeFaces-Foren noch irgendeine Frage auf Stack Overflow hat mir geholfen: ich habe versucht, alle Kombinationen von action
, actionListener
, innere <h:form>
, äußere <h:form>
auch die gefürchtete verschachtelte <h:form>
, aber die zugrunde liegende Methode ist noch nicht genannt.
Danke an Euch alle, Leute!
BEARBEITEN: ich habe einige mehr xhtml. Nur um klar zu sein: in der datatable ich bin Implementierung sowohl Einzel-und mehrfach-Auswahl-Mechanismen. Die einzigen die Auswahl erfolgt durch die editButton
in der letzten Spalte und löst die editDialog
dass mir Schmerzen, während die mehrfach-Auswahl aktiviert ist, indem Sie die Kontrollkästchen in der ersten Spalte und wird gezielt durch eine Befehlsschaltfläche unten in der Tabelle, löscht alle ausgewählten Benutzer; natürlich speichern Sie die Auswahl in verschiedenen Bereichen in der backing-bean (selectedUser
und selectedUsers[]
, beziehungsweise).
xhtml-Datei
<h:form id="tableForm">
<p:dataTable id="userList" var="user" value="#{userListBean.userList}"
selection="#{userListBean.selectedUsers}" rowKey="#{user.username}">
<!-- this is a checkbox column I use for multiple selection -->
<p:column selectionMode="multiple" style="width:2%"/>
<!-- other datatable columns -->
<!-- this is the button column that triggers the dialog -->
<p:column style="width:4%">
<p:commandButton id="editButton" update=":tableForm:editUserData"
oncomplete="PF('editDialog').show()" title="Edit" icon="ui-icon-pencil">
<f:setPropertyActionListener target="#{userListBean.selectedUser}"
value="#{user}" />
</p:commandButton>
</p:column>
</p:datatable>
<p:dialog id="editDlg" widgetVar="editDialog" header="Edit User"
showEffect="fade" hideEffect="fade" modal="true" dynamic="true">
<h:panelGrid columns="6" id="editUserData">
<p:outputLabel for="editUsername">Username:</p:outputLabel>
<p:inputText disabled="true" id="editUsername" value="#{userListBean.selectedUser.username}" />
<p:message for="editUsername" />
<!-- and other fields like that -->
</h:panelGrid>
<p:commandButton id="submitChanges" action="#{userListBean.editUser()}"
value="Submit changes" oncomplete="PF('editDialog').hide();" />
</p:dialog>
</h:form>
Backing bean
@ManagedBean(name="userListBean")
@ViewScoped
public class UserListBean {
private UserDTO selectedUser;
public UserListBean() {
}
//some methods...
public String editUser() {
System.out.println("------------------ EDIT TRIGGERED! -------------------");
System.out.println(selectedUser.getUsername());
//this stuff never gets printed, so the method is never called!
}
//getters and setters
}
- es wäre nett, wenn du posten könntest mehr von deinen xhtml
- Hinzugefügt mehr xhtml und einige zusätzliche Notizen! Nochmals vielen Dank. @LeonardoKenji
- Dialog muss seine eigene form.
- Tatsächlich, @BalusC, habe ich es herausgefunden! Ich hatte bereits versucht, indem Sie den dialog in seiner eigenen form, sowie das einhalten der dialog von Formen und setzen einen inneren dialog, aber ohne Erfolg. Ich habe angeordnet, Anordnung, arbeitete für mich in meiner Antwort. Vielen Dank trotzdem! 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich das einzige, was nicht gekommen, um meinen Geist stellte sich heraus, dass die eine, die arbeitete.
Sortierte ich mein Problem durch die Verwendung von DREI Formen (wie ich bereits in meiner Frage hatte ich schon ausprobiert, alle möglichen Kombinationen von ein-und zwei-Formen, auch verschachtelt), wie diese:
Sieht es aus wie jeder löst dieses problem in einer Weise, die nicht für andere arbeiten 🙂 .