Problemas para acessar objeto

4 respostas
S

Pessoal, tô com o seguinte problema:

No meu sistema, tenho as seguintes Classes: País, Estado e Cidade.

public class Pais {
	
	private Integer paisId;
	private String nome;
}

public class Estado {
	
	private Integer estadoId;
    private Pais pais
	private String nome;
}

public class Cidade{
	
	private Integer cidadeId;
    private Estado estado
	private String nome;
}
Na aplicação Cidade, preciso fazer um filtro selecionando país e carregando os estados daquele país. Fiz o filtro dessa maneira:
<ui:define name="label">Pais</ui:define>
<h:selectOneMenu value="#{cidade.estado.pais}"
	id="pais" label="Pais" required="true">
	<s:selectItems var="_pais"
		value="#{paises}"
		label="#{_pais.nome}"
		noSelectionLabel="Selecione" />
	<s:convertEntity />
	<a:support event="onchange"
		reRender="carregarEstados"
		ajaxSingle="true"
		action="#{filterAction.carregarEstados(cidade.estado.pais.paisId)}" />
</h:selectOneMenu>

O problema é que país não é um atributo de cidade, aí gera o seguinte erro: model validation failed:/cidade/cidade_edit.xhtml @23,49 value="#{cidade.estado.pais}": Target Unreachable, 'estado' returned null on 'org.domain.infralogjava.entity.Cidade'

Até posso criar um atributo país em cidade, e não-persistir esse atributo, mas aí complica meu método Edit, pois o value ficaria value="#{cidade.pais}" e como país não é persistido, não tras nada do banco e a combo vem vazia.

Alguem tem alguma solução pra isso?
Sei que deve ser algo bem simples, desculpem minha falta de conhecimento.

4 Respostas

seuparada

Cara,

me diz uma coisa, esse objeto cidade que você faz referência dentro da página, ele é uma propriedade de algum ManagedBean ?

Se for esse o caso você deve acessar da seguinte forma:

idDoManagedBeanNoFacesConfig.nomeDaPropriedade

[]'s

S

seuparada:
Cara,

me diz uma coisa, esse objeto cidade que você faz referência dentro da página, ele é uma propriedade de algum ManagedBean ?

Se for esse o caso você deve acessar da seguinte forma:

idDoManagedBeanNoFacesConfig.nomeDaPropriedade

[]'s


Opa, valeu pela resposta, mas como estou usando o JBoss Seam a maneira de acessar é do jeito que fiz mesmo.

Alguém mais poderia ajudar?

seuparada

Blz,

outra pergunta então: todos os níveis da hierarquia estão sendo inicializados ? Pela mensagem parece que não… me parece que tá faltando você setar a propriedade estado do objeto cidade… Dá uma verificada aí…

Ex:

Cidade cidade = new Cidade();
cidade.setEstado(new Estado());

[]'s

S

seuparada:
Blz,

outra pergunta então: todos os níveis da hierarquia estão sendo inicializados ? Pela mensagem parece que não… me parece que tá faltando você setar a propriedade estado do objeto cidade… Dá uma verificada aí…

Ex:

Cidade cidade = new Cidade();
cidade.setEstado(new Estado());

[]'s

Era isso mesmo velhinho!
Valeu aí, abraços!

Criado 25 de janeiro de 2010
Ultima resposta 25 de jan. de 2010
Respostas 4
Participantes 2