2016-08-27 2 views
0

Я использую PrimeFaces 6.0, и я нашел проблему с помощью вложенных диалогов. RequestContext.openDialog не работает должным образом. Он не вызывает никаких исключений, но не открывает диалоговое окно.PrimeFaces openDialog не работает должным образом в вложенных диалогах

Я построил 5 страниц (от P1 до P5) на основе того же полного макета страницы. Каждая страница содержит p: dataTable. p: dataTable имеет p: column с 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 (как его идентификатор наводит на мысль) выглядит следующим образом:

<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> 
Смежные вопросы