2011-09-22 207 views
0

我有一個簡單的JSF表單:如何禁用提交按鈕,直到按下其他按鈕?

<h:form> 
    <h:inputText value="#{textBean.firstName}"/> 
    <h:inputText value="#{textBean.lastName}"/> 
    <h:commandButton value="confirm" action="textBean.confirm"/> 
    <h:commandButton value="submit" action="textBean.submit"/> 
</h:form> 

這是必要的,你點擊之前「提交」用戶必須按下按鈕「確認」。否則,在「submit」按鈕旁邊會顯示一條錯誤消息。用戶不能點擊提交按鈕,如果沒有預先按下確認。在UI的一層上執行它是非常可取的。有人可能會對此提出一些建議?

回答

1

您可能想要更改邏輯,以便點擊提交按鈕時向用戶顯示一個確認對話框。簡單的東西是這樣的:

<h:form> 
    <h:inputText value="#{textBean.firstName}"/> 
    <h:inputText value="#{textBean.lastName}"/> 
    <h:commandButton value="submit" action="#{textBean.submit}" onclick="return confirm('Confirm form submit?');"/> 
</h:form> 

否則,如果你想獲得以上您可以禁用提到的行爲/隱藏提交按鈕,直到用戶點擊了確認按鈕,這樣的:

<h:form> 
    <h:inputText value="#{textBean.firstName}"/> 
    <h:inputText value="#{textBean.lastName}"/> 
    <h:commandButton value="confirm" action="#{textBean.confirm}"/> 
    <h:commandButton value="submit" action="#{textBean.submit}" disabled="#{textBean.btnDisabled}"/> 
</h:form> 

的如果要隱藏按鈕,則可以使用已渲染的屬性替換已禁用的屬性。它需要一個布爾值。這個布爾變量可以在您的confirm方法中設置爲true,以便在請求返回時啓用該按鈕。