我有一个类似下面的场景..
<h:selectOneRadio id="someId" value="#{myBean.type}" required="true">
<f:ajax event="valueChange" execute="@form" render="myPanel">
<f:selectItem itemLabel="Existing Type" itemValue="Existing Type" />
<f:selectItem itemLabel="New Type" itemValue="New Type" />
<h:selectOneRadio>
<h:panelGroup id="myPanel" rendered="#{myBean.checkforNewType()}">
<h:inputText id="txtval" value="#{mybean.val}" required = "true" requiredMessage="Some message">
<h:message for="txtval" styleClass="error"/>
<h:panelGroup>
基本上,如果属性类型的值为“Existing Type”,则应隐藏包含文本框的面板。 但我面临的问题是,如果用户将框保留为空白,则面板未被隐藏,因为它未通过验证。
当包含文本框的面板被隐藏时,是否有避免验证?
答案 0 :(得分:1)
更好地检查请求参数值。一般验证失败时,模型值不会更新,因此当绑定到请求范围的bean时,rendered
条件将失败。
<h:selectOneRadio id="someId" value="#{myBean.type}" required="true">
<f:ajax event="valueChange" execute="@form" render="myPanel">
<f:selectItem itemLabel="Existing Type" itemValue="Existing Type" />
<f:selectItem itemLabel="New Type" itemValue="New Type" />
<h:selectOneRadio>
<h:panelGroup id="myPanel" rendered="#{param['formId:someId'] == 'New Type'}">
<h:inputText id="txtval" value="#{mybean.val}" required="true" requiredMessage="Some message">
<h:message for="txtval" styleClass="error"/>
<h:panelGroup>
在此,我假设父<h:form>
有一个id="formId"
。