2016-07-11 36 views
0

我有兩個必填字段,第二個字段取決於第一個字段,我的意思是,第一個字段爲空時必須禁用第二個字段。兩個必填字段

在過程一切開始是好的,當我填的是第二個出現使得第一場,但是當我清理第一場,驗證做出了錯誤,第二場仍然能。

<h:inputText required="true" value="#{x.x}" /> 
<h:inputText required="true" value="#{x.y}" disabled="#{empty x.x}" /> 

如何使其正常工作?

+0

我認爲這是預期的行爲。您有required = true屬性意味着您無法清除它的值,並且當您無法清除值時,第二個字段不能再次禁用。 –

回答

1

disabled屬性檢查模型值。但是,驗證失敗時,模型值不會更新。然後你基本上檢查以前提交的模型值。

更好

檢查提交的值本身,而不是,這可作爲由該組件的客戶ID識別的HTTP請求參數:

<h:inputText binding="#{c}" ... required="true" /> 
<h:inputText ... required="true" disabled="#{empty param[c.clientId]}" /> 

或者,附加地檢查組件仍然valid

<h:inputText binding="#{c}" ... required="true" /> 
<h:inputText ... required="true" disabled="#{empty c.value or not c.valid}" /> 

無論如何,只填寫這兩個字段,然後只刪除第一個字段時,這些字段不會涵蓋該情況。第二個將顯示爲已禁用,但仍填寫完畢。在這個問題中,你不知道你想要做什麼,所以我會把它留給你作爲一個練習。