Problema com a4j:support, não atualiza combo

1 resposta
L

Pessoas,

estou tentando fazer um combo de estados atualizar dinamicamente o de cidades através do ajax4jsf. Quero manter o list de estados dentro de um mbean e o de cidades em outro, para poder reutilizá-los.

Porém, estou tendo um problema, pois o cidadeMBean está sempre com o objeto estado null, logo não consigo filtrar as cidades pelo estado.

Segue abaixo o código do que estou tentando fazer:

<h:selectOneMenu id="estado" value="#{pessoaMBean.pessoa.estado}" styleClass="selectComum" style="width:45px;">
	<f:selectItems value="#{estadoMBean.comboEstados}" />
	<a4j:support event="onchange" action="#{cidadeMBean.load}" ajaxSingle="true" reRender="cidade"/>
</h:selectOneMenu> 	


<h:selectOneMenu id="cidade" value="#{pessoaMBean.pessoa.cidade.id}" styleClass="selectComum" style="width:45px;">
	<f:selectItems value="#{cidadeMBean.comboCidades}" />
</h:selectOneMenu>
public class CidadeMBean {

	private List<SelectItem> comboCidades;
	private List<Cidade> cidades;
	private Cidade cidade;
	private CidadeDAO cidadeDAO;
	private Estado estado;
	
	private static final Logger log = Logger.getLogger(CidadeMBean.class);
	
	public void load() {
		CidadeMBean.log.info("load() estado: " + estado);
		this.comboCidades = cidadeDAO.getSelectListCidadesByEstado(estado);	
	}

	public List<SelectItem> getComboCidades() {
		CidadeMBean.log.info("getComboCidades() estado: " + estado);
		load();
		CidadeMBean.log.info("apos load()" + comboCidades.size());
		return comboCidades;
	}
	// ...
}
@Transactional
public class EstadoMBean {

	private List<SelectItem> comboEstados;
	private List<Estado> estados;
	private Estado estado;
	private EstadoDAO estadoDAO;
	
	private static final Logger log = Logger.getLogger(EstadoMBean.class);
	
	public List<Estado> getEstados() {
		this.estados = estadoDAO.getListEstados();
		
		EstadoMBean.log.info("getEstados()" + estados.size());
		return estados;
	}

	public void setEstados(List<Estado> estados) {
		this.estados = estados;
	}

	public List<SelectItem> getComboEstados() {
		this.comboEstados = estadoDAO.getSelectListEstados();
		
		EstadoMBean.log.info("getComboEstados()" + comboEstados.size());
		return comboEstados;
	}
	// ...
}

1 Resposta

L

Ninguem nunca usou o ajax4jsf para popular uma select usando dois beans diferentes?

Ninguém tem um exemplo de funcionalidade similar funcionando?

Criado 15 de agosto de 2007
Ultima resposta 17 de ago. de 2007
Respostas 1
Participantes 1