該場景如下所示:如何啓用/禁用JSF命令按鈕
屏幕上有兩個按鈕,比如button1和button2。在頁面加載時,button2被禁用。當用戶點擊按鈕1時,按鈕2將被啓用。我使用javascript window.onload事件和button1上的onclick事件實現了此功能。我的問題是,當用戶點擊button1時,它會觸發頁面重新加載。據說,在頁面重新載入後,由於onload事件,button2被禁用。
是否有另一種方法來實現此功能?
順便說一句,我使用的是primefaces。
該場景如下所示:如何啓用/禁用JSF命令按鈕
屏幕上有兩個按鈕,比如button1和button2。在頁面加載時,button2被禁用。當用戶點擊按鈕1時,按鈕2將被啓用。我使用javascript window.onload事件和button1上的onclick事件實現了此功能。我的問題是,當用戶點擊button1時,它會觸發頁面重新加載。據說,在頁面重新載入後,由於onload事件,button2被禁用。
是否有另一種方法來實現此功能?
順便說一句,我使用的是primefaces。
primeface頁是這樣的,
<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;
}
}
如果使用的是JSF 2.0,你可以使用f:ajax
標籤做到這一點。
您可以在豆
disabled="#{bean.isDisabled}"
禁用與條件的按鈕,當你重新呈現,當你點擊按鈕1按鈕,該按鈕可以啓用。
有一個在我看來有很多簡單的方法。
只需創建一個managed bean
一個boolean
屬性(吸氣劑+ setter方法)與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來只更新按鈕。
向我們顯示您的代碼。 – Eduard 2012-01-31 13:07:10
聽起來像是你可以使用一個答案從這裏http://stackoverflow.com/questions/9000669/re-enabled-pcommandbutton-not-firing-ajax – mrembisz 2012-01-31 18:52:58