我有一個h:selectOneListbox
,它具有屬性required="true"
。客戶端驗證a4j:ajax
工作正常。如何使用ajax檢查驗證錯誤並作出反應
如果完成了有效的選擇,則會呈現另一個面板組。
例子:
<h:selectOneListbox
....
id="first"
....
required="true"
>
<a4j:ajax event="valueChange" render="secondGroup" listener="#{myController.anotherMethodINeed}"/>
</h:selectOneListbox>
<!-- the other panel -->
<h:panelGroup id="secondGroup" layout="none">
<h:panelGroup id="secondGroupCheck" layout="none" rendered="#{not empty model.first}">
</h:panelGroup>
</h:panelGroup>
這也適用。
這裏的問題:
如果現在用戶選擇在所述第一選擇框(像一個空一個)一個非法值,則輸入客戶端側驗證。因此,這些信息從來不會對模型產生影響。在第一個有效的輸入之後,面板總是被渲染。沒有辦法讓它再次消失,因爲服務器不知道更改。
我知道的唯一解決方法是爲這樣的字段進行自定義驗證。如果需要渲染面板,驗證器會設置一個標誌。這個標誌可以用來決定是否應該渲染面板組。
有沒有更聰明的方法來做到這一點?
我知道我可以使用類似rendered="#{not facesContext.validationFailed}"
的東西來檢查所有的字段,但我不知道只檢查一個字段的方法。
Thx。 JSF 2有一個非常陡峭的學習曲線... –
不客氣。 – BalusC