Problema com validação JSF + Richfaces

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) );
}

E ai, robertwgil ! Tudo bem ?

Vi que postou faz um tempo e não obteve resposta, mas você conseguiu resolver ? Postei um recentemente sobre esse caso e também não obtive resposta. Creio que não é um caso comum.

Você conseguiu resolver ? Como ?

Consegui fazer funcionar sim, se não me engano utilizei o keepAlive do a4j.

<a4j:keepAlive beanName="filialAgenciaController"/>

Coloquei ai e diz se resolveu pra ti tambem.

Att.

nao sei se entendi bem o problema… mas…

se der algum erro de validação no ciclo do jsf… ele irá pular da fase de validar para a últma fase que é renderizar a tela…
e assim não passando pela fazer de atualizar os dados do ManagerBean…
se usar o immediate vc consegue obter os dados… mas é pulado a fase de validação…acho que não seria interessante…
ou ainda vc pode obter os dados via parametros…

E isso mesmo, robertwgil !

Andei fuçando ontem na net e encontrei essa solução mesmo. Ainda no JSF2 existe uma outra alternativa para o KeepAlive que é colocar no ManagedBean no @ViewScoped que fica no meio termo entre @RequestScoped(muito curto) e @SessionScoped(muito longo).

Funcionou direitinho !

Valeu