Повторно включен p: commandButton не запускает AJAX - PullRequest
2 голосов
/ 25 января 2012

Если я инициирую отключение commandButton, событие AJAX не срабатывает даже после повторного включения кнопки.

<p:commandButton id="btnAJAX" value="AJAX" widgetVar="btnAJAX" disabled="true" action="#{bean.neverReached()}"/>
<p:commandButton id="btnEnabler" value="Enable" oncomplete="btnAJAX.enable()"/>

Аналогичная проблема, идентифицированная здесь: http://forum.primefaces.org/viewtopic.php?f=3&t=7817

Я использую простые символы3.0.1 и JDK 1.7

Есть ли какое-нибудь решение для этого?

1 Ответ

4 голосов
/ 25 января 2012

Вам нужно включить кнопку с помощью JSF, а не с помощью JavaScript / HTML DOM. Во время обработки отправки формы JSF также проверит в состоянии просмотра на стороне сервера, включена ли кнопка или нет, как часть защиты от несанкционированных запросов.

* 1003 Е.Г. *

<p:commandButton id="btnAJAX" value="AJAX" action="#{bean.someAction}" disabled="#{!bean.enabled}" />
<p:commandButton id="btnEnabler" value="Enable" action="#{bean.enableButton}" process="@this" update="btnAJAX" />

с

private boolean enabled;

public void enableButton() {
    enabled = true;
}

public boolean isEnabled() {
    return enabled;
}

Убедитесь, что bean-компонент имеет значение не менее @ViewScoped, а не @RequestScoped, в противном случае действие кнопки все равно не будет выполнено, потому что bean-компонент создается заново во время запроса на отправку формы, и поэтому свойство enabled станет значением по умолчанию. false. 1013 *

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...