2016-08-27 6 views
0

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.

+0

Jeder Fehler Javascript? –

Antwort

0

Nach einigen weiteren Tests habe ich eine Arbeit gefunden. Ich gab nur den Knopf eine andere Identifikation in jeder Seite und jetzt funktionieren alle Knöpfe aller Seiten gut.

Nun ist die Taste der Seite P1 (als id schon sagt) sieht wie folgt aus:

<p:commandButton 
    id=buttonOfPage1 
    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> 
Verwandte Themen