reRender em campo inputText

Caros amigos,

Desejo fazer uma coisa extremamente simples porém não consigo fazer funcionar. Basicamente tenho dois campos inputText, um para digitar o cep e o outro via a4j será reRenderizado para mostrar a rua.

Agradeço qualquer sugestão.

Segue o exemplo básico que estou executando sem sucessso:

JSP

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich"%>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%>

<f:view>

	<a4j:keepAlive beanName="testeMB" />
	
	<h:form id="FEditar">
		<h:panelGrid columns="3" id="PGDados">
			<h:outputText value="CEP" />
			<h:inputText id="idCEP" value="#{testeMB.cep}" size="9" maxlength="9">
				<a4j:support event="onblur" ajaxSingle="true"  action="#{testeMB.actionBuscaCEPResidencial}" reRender="idEndereco"/>
			</h:inputText>
			<rich:message for="idCEP"/>
			
			
			<h:outputText value="Endereço" />
			<h:inputText id="idEndereco" value="#{testeMB.endereco}" required="true" size="60">
			</h:inputText>
			<rich:message for="idEndereco"/>
			
		</h:panelGrid>

	</h:form>

</f:view>

MB

public class TesteMB {

	private String endereco = "";
	private String cep = "";
	
	
	public void actionBuscaCEPResidencial() {
		endereco = "Rua ....";
		
	}
	
	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}	
	
	
}

Vê se isso te ajuda.

&lt;a4j:outputPanel id="panel_endereco"&gt;
    &lt;h:panelGrid columns="3" id="PGDados"&gt;

		&lt;h:outputText value="CEP" /&gt;
		&lt;h:inputText id="idCEP" value="#{testeMB.cep}" size="9" maxlength="9"&gt;
			&lt;a4j:support event="onblur" actionListener="#{testeMB.actionBuscaCEPResidencial}" reRender="panel_endereco"/&gt;
		&lt;/h:inputText&gt;
		&lt;rich:message for="idCEP"/&gt;
			
			
		&lt;h:outputText value="Endereço" /&gt;
		&lt;h:inputText id="idEndereco" value="#{testeMB.endereco}" required="true" size="60"&gt;
		&lt;/h:inputText&gt;
		&lt;rich:message for="idEndereco"/&gt;
			
	&lt;/h:panelGrid&gt;
&lt;/a4j:outputPanel&gt;
public void actionBuscaCEPResidencial(ActionEvent event) {  
      endereco = "Rua ....";            
}

Espero ter ajudado.

henriquejhc,

Muito obrigado pela sugestão. Infelizmente o problema persiste. O método é executado, o atributo dentro do MB é atualizado porém o reRender não ocorre de jeito nenhum!

Por favor, se você tiver mais alguma sugestão ou outro colega do guj fico muito grato.

Att,
Tássio

Caros colegas,

Depois de muita pesquisa encontrei a solução!

É necessário cercar o campo CEP, que irá disparar a action com a4j:region. Foi só fazer isso e tudo passou a funcionar. Segue o código correto para que sirva de exemplo futuro.

JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich"%>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%>

<f:view>

	<a4j:keepAlive beanName="testeMB" />
	
	<h:form id="FEditar">
		<h:panelGrid columns="3" id="PGDados">
		
			<h:outputText value="CEP" />
			<a4j:region>
				<h:inputText id="idCEP" value="#{testeMB.cep}" size="9" maxlength="9">
					<a4j:support event="onblur" ajaxSingle="true"  action="#{testeMB.actionBuscaCEPResidencial}" reRender="idEndereco"/>
				</h:inputText>
			</a4j:region>
			<rich:message for="idCEP"/>
			
			
			
			<h:outputText value="Endereço" />
			<h:inputText id="idEndereco" value="#{testeMB.endereco}" required="true" size="60">
			</h:inputText>
			<rich:message for="idEndereco"/>
			
		</h:panelGrid>

	</h:form>

</f:view>

MB

public class TesteMB {

	private String endereco = "";
	private String cep = "";
	
	public void actionBuscaCEPResidencial() {
		endereco = "Rua .... 2";
	}
	
	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}
}

Abraço,
Tássio Coêlho

Estranho. Eu tenho um formulário onde o usuário digita o cep e eu busco em um webservice todas as informações referentes aquele cep(logradouro, tipo_logradouro, cidade, bairro, uf, etc…) e uso daquela forma que eu te passei o exemplo e funciona perfeitamente. Mas se está funcionando beleza.