PrimeFaces p:commandButton ajax="false" внутри p:confirmDialog не вызывает действиеJAVA

Программисты JAVA общаются здесь
Anonymous
PrimeFaces p:commandButton ajax="false" внутри p:confirmDialog не вызывает действие

Сообщение Anonymous »

Мне необходимо использовать PrimeFaces p:confirmDialog, чтобы задать простой вопрос «да-нет». Первоначальная идея заключалась в том, чтобы использовать p:commandButton ajax="true", вызывать действие для обновления статуса и оставаться на той же странице (использовать обновление пользовательского интерфейса PF @form + отображать сообщение пользователю): Это работает так, как ожидалось. Действие вызывается, статус в базе данных обновляется, и пользовательский интерфейс показывает, что все в порядке.
Теперь клиент решил изменить это и выполнить переход на другую страницу с помощью «Да» (в случае успеха).
Поэтому выбор заключался в том, чтобы попробовать
(поскольку он используется во всем проекте, поэтому код этой кнопки по сути представляет собой скорректированную копию из какого-то другого места в проекте).
Кнопка «Диалоговое окно +» с использованием ajax="false»: Однако действие никогда не вызывается.
Затем я установил JSF PhaseListener (подключенный к face-config.xml), чтобы проверить некоторые вещи:

Код: Выделить всё

public class AnyPhaseListener implements PhaseListener {

@Override
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}

@Override
public void beforePhase(PhaseEvent event) {
System.out.println("----------------- " + getClass().getSimpleName() + " BEFORE PHASE: " + event.getPhaseId());
}

@Override
public void afterPhase(PhaseEvent event) {
System.out.println("----------------- " + getClass().getSimpleName() + " AFTER PHASE: " + event.getPhaseId());
}
}
Это выводит все посещенные фазы для каждого запроса.
Для (рабочей) кнопки AJAX true, приведенной выше, зарегистрированные системные сообщения:

Код: Выделить всё

[3/26/26 19:58:26:095 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RESTORE_VIEW(1)
[3/26/26 19:58:26:105 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RESTORE_VIEW(1)
[3/26/26 19:58:26:105 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:58:26:106 CET] 000016f1 HtmlRendererU W   There should always be a submitted value for an input if it is rendered, its form is submitted, and it was not originally rendered disabled or read-only.  You cannot submit a form after disabling an input element via javascript.  Consider setting read-only to true instead or resetting the disabled value back to false prior to form submission.  Component : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/auskunftsersuchen/ergebnisTextbaustein.xhtml][Class: javax.faces.component.html.HtmlBody,Id: j_id_d][Class: javax.faces.component.html.HtmlInputHidden,Id: j_id_3h]}
[3/26/26 19:58:26:106 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:58:26:106 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:58:26:107 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:58:26:107 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:58:26:108 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:58:26:108 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:58:26:108 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:58:26:109 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RENDER_RESPONSE(6)
[3/26/26 19:58:26:123 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RENDER_RESPONSE(6)
[3/26/26 19:58:28:160 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RESTORE_VIEW(1)
[3/26/26 19:58:28:172 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RESTORE_VIEW(1)
[3/26/26 19:58:28:173 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:58:28:173 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:58:28:173 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:58:28:174 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:58:28:174 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:58:28:174 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:58:28:174 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:58:28:175 CET] 000016f1 SystemOut     O ------------------------- ErgebnisTextbausteinStatusBean.finalizeStatus()!
[3/26/26 19:58:28:175 CET] 000016f1 SystemOut     O ------------------------- 2
[3/26/26 19:58:28:649 CET] 000016f1 SystemOut     O ------------------------- 3
[3/26/26 19:58:30:510 CET] 000016f1 SystemOut     O ------------------------- 4
[3/26/26 19:58:30:510 CET] 000016f1 SystemOut     O ------------------------- 5
[3/26/26 19:58:30:510 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:58:30:511 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RENDER_RESPONSE(6)
[3/26/26 19:58:30:661 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RENDER_RESPONSE(6)
[3/26/26 19:58:34:658 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RESTORE_VIEW(1)
[3/26/26 19:58:34:667 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RESTORE_VIEW(1)
[3/26/26 19:58:34:667 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:58:34:668 CET] 000016f1 HtmlRendererU W   There should always be a submitted value for an input if it is rendered, its form is submitted, and it was not originally rendered disabled or read-only.  You cannot submit a form after disabling an input element via javascript.  Consider setting read-only to true instead or resetting the disabled value back to false prior to form submission.  Component : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/auskunftsersuchen/ergebnisTextbaustein.xhtml][Class: javax.faces.component.html.HtmlBody,Id: j_id_d][Class: javax.faces.component.html.HtmlInputHidden,Id: j_id_3h]}
[3/26/26 19:58:34:668 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:58:34:668 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:58:34:669 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:58:34:669 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:58:34:669 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:58:34:670 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:58:34:670 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:58:34:670 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RENDER_RESPONSE(6)
[3/26/26 19:58:34:680 CET] 000016f1 SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RENDER_RESPONSE(6)
Обратите внимание на вызов `finalizeStatus()`, а также системные выходы 2-3-4-5, которые я вставил в метод действия.
Вывод для ложной кнопки AJAX отличается:

Код: Выделить всё

[3/26/26 19:36:38:871 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RESTORE_VIEW(1)
[3/26/26 19:36:38:879 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RESTORE_VIEW(1)
[3/26/26 19:36:38:880 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:36:38:880 CET] 000016eb HtmlRendererU W   There should always be a submitted value for an input if it is rendered, its form is submitted, and it was not originally rendered disabled or read-only.  You cannot submit a form after disabling an input element via javascript.  Consider setting read-only to true instead or resetting the disabled value back to false prior to form submission. Component : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/auskunftsersuchen/ergebnisTextbaustein.xhtml][Class: javax.faces.component.html.HtmlBody,Id: j_id_d][Class: javax.faces.component.html.HtmlInputHidden,Id: j_id_3h]}
[3/26/26 19:36:38:880 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:36:38:880 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:36:38:881 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:36:38:881 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:36:38:881 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:36:38:882 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:36:38:882 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:36:38:882 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RENDER_RESPONSE(6)
[3/26/26 19:36:38:891 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RENDER_RESPONSE(6)
[3/26/26 19:36:45:492 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RESTORE_VIEW(1)
[3/26/26 19:36:45:500 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RESTORE_VIEW(1)
[3/26/26 19:36:45:501 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:36:45:501 CET] 000016eb HtmlRendererU W   There should always be a submitted value for an input if it is rendered, its form is submitted, and it was not originally rendered disabled or read-only.  You cannot submit a form after disabling an input element via javascript.  Consider setting read-only to true instead or resetting the disabled value back to false prior to form submission.  Component : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/auskunftsersuchen/ergebnisTextbaustein.xhtml][Class: javax.faces.component.html.HtmlBody,Id: j_id_d][Class: javax.faces.component.html.HtmlInputHidden,Id: j_id_3h]}
[3/26/26 19:36:45:501 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: APPLY_REQUEST_VALUES(2)
[3/26/26 19:36:45:501 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:36:45:502 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: PROCESS_VALIDATIONS(3)
[3/26/26 19:36:45:502 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:36:45:503 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: UPDATE_MODEL_VALUES(4)
[3/26/26 19:36:45:503 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:36:45:503 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: INVOKE_APPLICATION(5)
[3/26/26 19:36:45:504 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener BEFORE PHASE: RENDER_RESPONSE(6)
[3/26/26 19:36:45:515 CET] 000016eb SystemOut     O ----------------- AnyPhaseListener AFTER PHASE: RENDER_RESPONSE(6)
Здесь полностью отсутствуют системные сообщения, и эти выходные данные показывают, что в середине отсутствует полный запрос.
Не знаю насчет двух других запросов, одного до и одного после, но давайте предположим, что с ними все в порядке.
Что здесь не так с кодом/решением?
Мы находимся на старом сервере WebSphere 9, использующем JSF 2.2, и PrimeFaces 13.0.10

Вернуться в «JAVA»