Сценарий выглядит так:
На экране есть две кнопки, скажем, кнопка1 и кнопка2. При загрузке страницы кнопка2 отключена. Когда пользователь нажимает кнопку 1, кнопка 2 будет включена. Я достиг этой функциональности, используя событие javascript window.onload и событие onclick на кнопке1. Моя проблема в том, что когда пользователь нажимает кнопку 1, он запускает перезагрузку страницы. При этом после перезагрузки страницы кнопка2 отключается из-за события onload.
Есть ли другой способ достичь этой функциональности?
Кстати, я использую Primefaces.
Ответ 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, кнопка может быть включена.