PrimeFaces-Befehlsschaltfläche in confirmDialog ruft keine Backing-Bean auf

8

Ich habe eine PrimeFaces-Datentabelle, die eine Reihe von Benutzern anzeigt, die in jeder Zeile mit einem BefehlLink gelöscht werden sollen. Wenn auf den Link geklickt wird, erscheint ein confirmDialog mit einer "Ja" -Schaltfläche, die die "delete" -Methode in der Backing-Bean aufrufen sollte. Leider wird diese Methode nicht aufgerufen und der Dialog ist nur versteckt. Der Parameter von der Verbindung wird gesetzt, weil ich es mit dem Debugger gesehen habe.

Hier ist meine Seite:

%Vor%

Backing-Bean-Methode:

%Vor%

Ich habe überprüft und ich habe keine verschachtelten Formulare, da dies der üblichste Fall ist, wenn die Backing Bean nicht aufgerufen wird ...

Hier sind meine Vorlagendateien:

CommonLayout.xhtml

%Vor%

CommonHeader.xhtml:

%Vor%

CommonContent.xhtml:

%Vor%

LinkeMenü.xhtml:

%Vor%

Ich benutze PrimeFaces 3.4 und JSF 2.0

    
AndaP 11.01.2013, 15:44
quelle

1 Antwort

19

Das <p:confirmDialog ... appendToBody="true"> bewirkt, dass die HTML-Darstellung des Bestätigungsdialogs während des DOM-ready-Vorgangs an das Ende von HTML <body> element durch JavaScript verschoben wird.

Dies führt jedoch dazu, dass die HTML-Darstellung des Bestätigungsdialogs nicht mehr in irgendeiner Form vorliegt. Es wurde also effektiv kein Formular gesendet und keine Anfrageparameter gesendet, so dass JSF die Aktion nicht identifizieren kann.

Sie müssen dem Bestätigungsdialog sein eigenes <h:form> geben.

%Vor%

Und um Verwirrung bei der Wartung zu vermeiden (Verschachtelung von Formularen ist nämlich illegal), schlage ich auch vor, diese Komponente zum Ende der Vorlage zu bewegen, mindestens nach der "äußeren" <h:form> .

    
BalusC 11.01.2013, 16:08
quelle

Tags und Links