Olá, pessoal tenho um problema que não consegui achar solução na net.
Vou coloca o código abaixo pra explicar mais facil:
Quando não existir erro de validação eu adiciono normal e reenderizo dois componentes na minha tela,
‘gridContats’ para zerar os campos e ‘contacts’ para atualizar minha tabela.
O problema ocorre quando existe algum erro de validação, pois a variável ‘filialAgencia.idFilialAgencia’ não é
preenchida no meu MB. e não tendo este id, quando ele vai buscar os contatos e não acha nada.
Ou seja, precisaria que essa propriedade fosse setada mesmo que houvesse erro de valiação de outros campos.
Alguem tem alguma idéia de como resolver isso?
Creio que uma das saidas é usar escopo com session, mas acho muito porco fazer isso.
<a4j:form ajaxSubmit="true" reRender="gridContats,contacts">
<h:inputHidden value="#{filialAgenciaController.filialAgencia.idFilialAgencia}"/>
<h:panelGrid columns="2" id="gridContats">
<h:outputText value="#{msg['ddi']}" />
<h:inputText value="#{filialAgenciaController.contato.ddi}" required="true" >
</h:inputText>
<h:outputText value="#{msg['ddd']}" />
<h:inputText value="#{filialAgenciaController.contato.ddd}" required="true" >
</h:inputText>
<h:outputText value="#{msg['telefone']}" />
<h:inputText value="#{filialAgenciaController.contato.telefone}" required="true" ></h:inputText>
</h:panelGrid>
<h:commandButton action="#{filialAgenciaController.addContato}" value="Add Tel" />
</a4j:form>
<br/>
<rich:dataTable value="#{filialAgenciaController.contatos}" var="ct" id="contacts">
<rich:column>
<f:facet name="header">
<h:outputText value="#{msg['ddi']}" />
</f:facet>
<h:inputText value="#{ct.ddi}" maxlength="3">
<f:validateLength maximum="3"/>
</h:inputText>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="#{msg['ddd']}" />
</f:facet>
<h:inputText value="#{ct.ddd}" maxlength="3">
<f:validateLength maximum="3"/>
</h:inputText>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="#{msg['telefone']}" />
</f:facet>
<h:inputText value="#{ct.telefone}" maxlength="15">
<f:validateLength maximum="15"/>
</h:inputText>
</rich:column>
</rich:dataTable>
MB
FilialAgencia filialAgencia = new FilialAgencia();
// getter e setters
public List<Contato> getContatos() {
return new ArrayList<Contato>( service.loadContatos(filialAgencia) );
}