Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как включить/отключить командную кнопку JSF

Автор вопроса: AdanОтветов: 3

Сценарий выглядит так:

На экране есть две кнопки, скажем, кнопка1 и кнопка2. При загрузке страницы кнопка2 отключена. Когда пользователь нажимает кнопку 1, кнопка 2 будет включена. Я достиг этой функциональности, используя событие javascript window.onload и событие onclick на кнопке1. Моя проблема в том, что когда пользователь нажимает кнопку 1, он запускает перезагрузку страницы. При этом после перезагрузки страницы кнопка2 отключается из-за события onload.

Есть ли другой способ достичь этой функциональности?

Кстати, я использую Primefaces.

  • Похоже, вы могли бы использовать ответ здесь .com/questions/9000669/ mrembisz 31.01.2012

jsfprimefaces

Ответы

Ответ 1 · рейтинг 16 · Kushan

главная страница выглядит так,

 <p:commandButton update="panel1"  actionListener="#{bean.button1}" value="button1" disabled="#{bean.disable}">
     <f:setPropertyActionListener value="#{false}" target="#{bean.disable}"/>
 </p:commandButton>


 <p:commandButton update="panel2"  actionListener="#{bean.button2}" value="button1" disabled="#{!(bean.disable)}">
     <f:setPropertyActionListener value="#{true}" target="#{bean.disable}"/>
 </p:commandButton>

Управление бином:

 public class Bean {

    private boolean disable;

    // default constructor
    public Bean(){
       this.disable= false;
    }

    public boolean isDisable() {
       return disable;
    }
    public void setDisable(boolean disable) {
       this.disable = disable;
    }
}

Ответ 2 · рейтинг 1 · alexander

На мой взгляд, есть намного более простой способ.

Просто создайте свойство boolean (с геттером + сеттером) в managed bean с аннотациями javax.faces.bean.ViewScoped и javax.faces.bean.ManagedBean.

Вы можете управлять отключенным состоянием через это свойство (button2State).

<h:form>
    <p:commandButton id="button1" update="button2"
        action="#{bean.setButton2State(false)}"
        value="Enable second button" />
    <p:commandButton id="button2" disabled="#{bean.button2State}"
        value="button disabled one page load" />
</h:form>

Первая кнопка вызывает setter свойства и устанавливает button2State в false, чтобы активировать кнопку. Также в этом примере ajax используется только для обновления кнопки.

Ответ 3 · cremersstijn

Если вы используете JSF 2.0, вы можете сделать это с помощью тега f:ajax.

Вы можете отключить кнопку с условием в bean-компоненте

disabled="#{bean.isDisabled}"

когда вы перерисовываете кнопку, когда вы нажимаете кнопку 1, кнопка может быть включена.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы