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

В основном панель, содержащая текстовое поле должно быть скрыто, если значение типа недвижимости является «Existing Type». Но проблема, с которой я столкнулся, заключается в том, что если пользователь покидает поле пустым, панель не скрывается, поскольку не выполняется проверка.

Есть ли все равно, чтобы избежать проверки, когда панель, содержащая текстовое поле, скрыта?

ответ

1

Вместо этого лучше проверьте значение параметра запроса. Значение модели не обновляется, когда валидация вообще не удалась, и, следовательно, ваше состояние 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".

+0

Удивительный, вы мужчина. – user1220373

+0

Добро пожаловать. – BalusC