2016-08-27 89 views
0

我正在使用PrimeFaces 6.0,並且發現了使用嵌套對話框的問題。 RequestContext.openDialog無法正常工作。它不會拋出任何異常,但不會打開對話框。PrimeFaces openDialog在嵌套對話框中無法正常工作

我建立了5頁(P1到P5)基於相同的整頁佈局。每頁包含一個p:dataTablep:dataTable具有p:列p:commandButton在新對話框中打開下一頁。這是我發現的:在其中一些頁面上,第一行的按鈕不起作用;其餘行的按鈕正常工作。

該問題似乎並不是行數據固有的。當第一行的按鈕失敗時,無論顯示在哪裏的行都失敗。行可以按不同的方式排序(因此第一行可能會有所不同),第一行的按鈕將繼續失敗,其餘按鈕將繼續工作。這個問題似乎也不是頁面固有的。當頁面是根(打開第一個對話框的頁面)時,所有按鈕都可以正常工作。該問題只發生在對話框中。

這是按鈕:

<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> 

這是在背襯豆的代碼(每個5種豆的具有不同的結果,但該代碼的其餘部分是相同的):

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 + ""); 
} 

其他人發現了類似的問題嗎?任何幫助解決或解決這個問題將非常感激。

+0

任何JavaScript錯誤? –

回答

0

經過一些測試後,我發現了一個工作。我只是給每個頁面上的按鈕設置了不同的id,現在所有頁面的所有按鈕都可以正常工作。

現在頁面P1(作爲其ID建議)的按鈕看起來是這樣的:

<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> 
相關問題