<p: commandButton> не работает, когда disable = "true" изначально - PullRequest
3 голосов
/ 27 декабря 2011

Это мой ManagedBean:

@Named(value = "mrBean")
@RequestScoped
public class MrBean {

   public void laugh() {
      System.out.println("HAHAHA");
   }

   public void prepareToLaugh() {
      System.out.println("Drink water.");
   }

}

И это рабочая версия моей кнопки Command:

<p:commandButton actionListener="#{mrBean.laugh}" widgetVar="laughtButton"
                 value="Laugh" oncomplete="laughButton.disable();"  />

Когда я нажал на кнопку выше, я увидел HAHAHA иКнопка отключена.Однако, когда я установил для атрибута disableaughnButton true, кнопка больше не работает:

<p:commandButton actionListener="#{mrBean.laugh}" widgetVar="laughtButton"
                 value="Laugh" disabled="true" oncomplete="laughButton.disable();"  />

<p:commandButton actionListener="#{mrBean.prepareToLaugh}"
                 value="Prepare to laugh" oncomplete="laughButton.enable();" />

Когда я нажимаю 2-ю кнопку, я вижу Drink water и 1-я кнопка включена,Однако, когда я нажимаю первую кнопку, ничего не происходит.

Я был бы очень признателен, если бы кто-нибудь мог дать мне совет, как мне решить эту проблему.Я использую PrimeFaces 3.0 RC2.

1 Ответ

9 голосов
/ 27 декабря 2011

Как и в случае с атрибутом rendered, JSF повторно оценивает атрибут disabled на стороне сервера во время обработки отправки формы как часть защиты от несанкционированных запросов и тому подобного. Однако вы включаете / отключаете его с помощью JS, не уведомляя серверную сторону об изменениях.

Необходимо убедиться, что значение атрибута disabled оценивается false во время запроса, когда вы намерены включить кнопку во время обработки отправки формы. Например, свяжите его со свойством boolean bean-объекта области видимости, которое устанавливается другой кнопкой.

<h:commandButton disabled="#{bean.laughDisabled}" />

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

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