2012-06-25 25 views
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> 

基本上,如果屬性類型的值是「現有類型」含有文本框中的面板應該被隱藏。 但我面臨的問題是,如果用戶將框留空,面板不會隱藏,因爲它未通過驗證。

無論如何避免包含文本框的面板被隱藏時的驗證?

回答

1

改爲更好地檢查請求參數值。一般而言,驗證失敗時,模型值不會更新,因此當綁定到請求作用域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"

+0

真棒,你是男人。 – user1220373

+0

不客氣。 – BalusC