Ich benutze PrimeFaces 6.0 und ich habe ein Problem mit verschachtelten Dialogen gefunden. RequestContext.openDialog funktioniert nicht richtig. Es wird keine Ausnahme ausgelöst, aber das Dialogfeld wird nicht geöffnet.PrimeFaces openDialog funktioniert nicht ordnungsgemäß in verschachtelten Dialogen
Ich baute 5 Seiten (P1 bis P5) basierend auf dem gleichen Full Page Layout. Jede Seite enthält eine p: dataTable. Die p: dataTable hat eine p: Spalte mit einem p: commandButton, um die nächste Seite in einem neuen Dialogfeld zu öffnen. Das habe ich gefunden: Auf einigen dieser Seiten funktioniert der Button der ersten Zeile nicht; Die Schaltflächen der übrigen Zeilen funktionieren ordnungsgemäß.
Das Problem scheint den Zeilendaten nicht inhärent zu sein. Wenn die Schaltfläche der ersten Zeile fehlschlägt, schlägt sie ungeachtet der Zeile fehl, die dort angezeigt wird. Zeilen können auf verschiedene Arten sortiert werden (so würde die erste variieren) und die Schaltfläche der ersten Zeile wird weiterhin fehlschlagen und der Rest der Schaltflächen wird weiter funktionieren. Das Problem scheint der Seite auch nicht inhärent zu sein. Alle Schaltflächen funktionieren ordnungsgemäß, wenn die Seite root ist (die Seite, die den ersten Dialog öffnet). Das Problem tritt nur innerhalb eines Dialogs auf.
Dies ist der Button:
<p:commandButton
icon="fa fa-folder-open"
action="#{ambientePrueba11.openDialog(currentRow)}"
partialSubmit="true"
process="@this"
update="@none">
<p:ajax
event="dialogReturn"
listener="#{ambientePrueba11.onDialogReturn}"
update="dataTable"/>
</p:commandButton>
Dies ist der Code in der Trägerbohne (jeder der 5 Bohnen ein anderes Ergebnis hat, aber der Rest des Codes ist gleich):
public String openDialog(AmbientePrueba row) {
EventLogger.log(this, "openDialog", getDenominacion(row));
Object identificacion = getIdentificacion(row);
String key = "PaquetePrueba11";
String outcome = FacesUtils.getPageKeyFacesOutcome(key);
Map<String, Object> options = new HashMap<>();
options.put("modal", true);
options.put("resizable", true);
options.put("draggable", true);
options.put("width", 1260);
options.put("height", 860);
options.put("contentWidth", "100%");
options.put("contentHeight", "100%");
options.put("closable", true);
options.put("includeViewParams", true);
options.put("minimizable", true);
options.put("maximizable", true);
Map<String, List<String>> params = new HashMap<>();
params.put(CPP.ID_RECURSO, toList(identificacion));
params.put(CPP.ID_RECURSO_MAESTRO, toList(identificacion));
params.put(Global.PARAMETRO_FRAMEWORK_SESION, toList(getSessionFrame()));
params.put(Global.PARAMETRO_CONDICION_SESION, toList(MODAL));
RequestContext.getCurrentInstance().openDialog(outcome, options, params);
return null;
}
private List<String> toList(Object value) {
List<String> paramValue = new ArrayList<>();
paramValue.add(value + "");
return paramValue;
}
public void onDialogReturn(SelectEvent event) {
Object response = event.getObject();
facesLogger.info(response + "");
}
Hat jemand anderes ein ähnliches Problem gefunden? Jede Hilfe zur Lösung oder Umgehung dieses Problems wird sehr geschätzt.
Jeder Fehler Javascript? –