1

我有一个像下面这样的场景..

<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>

如果属性类型的值为“现有类型”,则基本上应该隐藏包含文本框的面板。但我面临的问题是,如果用户将框留空,则面板不会因为验证失败而隐藏。

当包含文本框的面板被隐藏时,是否有避免验证?

4

1 回答 1

1

最好检查请求参数值。当验证通常失败时,模型值不会更新,因此rendered当绑定到请求范围的 bean 时,您的条件将失败。

<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".

于 2012-06-25T13:59:27.337 回答