Nano Hash - криптовалюты, майнинг, программирование

PrimeFaces openDialog не работает должным образом во вложенных диалогах

Я использую PrimeFaces 6.0 и обнаружил проблему с использованием вложенных диалогов. RequestContext.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 + "");
}

Кто-нибудь еще нашел подобную проблему? Любая помощь в решении или обходе этой проблемы будет очень признательна.

27.08.2016

  • Любая ошибка Javascript? 28.08.2016

Ответы:


1

После еще нескольких тестов я нашел обходной путь. Я просто дал кнопке другой 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>
29.08.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..