我正在使用jsf 2.1 + primefaces 3.4.1。我遇到了阻止驗證禁用組件的問題。primefaces禁用組件驗證
什麼我大約是這樣的:
<h:form id="form">
<p:dataTable id="parentDataTable" value=#{bean.list} var="parentItem"..>
<p:column>
..
<p:dataTable id="childDataTable" value=#{bean.map[parentItem]}" var="childItem">
<p:column>
<f:facet name="header">
some inputText
</f:facet>
<p:inputText id="inputText"
disabled=#{bean.selectedObjectsMap[childItem]} required="true" requiredMessage="value required" />
<p:message for=":form:parentDataTable:childDataTable:inputText" />
</p:column>
<p:column>
<f:facet name="header">
Select
</f:facet>
<p:selectBooleanCheckbox id="checkBox" value="#{bean.selectedObjectsMap[childItem]}">
<p:ajax update=":form:parentDataTable:childDataTable:inputText" />
</p:selectBooleanCheckbox>
</p:column>
</p:dataTable>
</p:column>
</p:dataTable>
</h:form>
的想法是,在默認情況下inputText組件被禁用,當我提交表單的「所需的值」驗證不起作用。當我點擊selectBooleancheckbox組件時,inputText被啓用,並且當我提交表單時,「required value」驗證也起作用。但是,當我禁用inputText時,驗證將繼續進行並顯示「需要值」消息,我無法提交表單。看起來,當我單擊複選框時,服務器端的JSF UI組件樹不能正確更新,但從視覺上我可以看到每次單擊複選框時都會禁用inputText組件。
任何想法如何解決這個問題?
還有一個問題。你可以看看這個問題,請:[鏈接](http://stackoverflow.com/questions/13740924/jsf-2-1-selectonelistbox-component-does-not-set-new- value) – Nurjan