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 に答える