Problema Com Conversor JSF

16 respostas
colored

Bom to precisando converter dados de uma classe de Grau de Parentesco.
Mas estou com alguns problemas…

eu pego todos os nome desse Grau de Parentesco…

public List<SelectItem> getGrauDeParentesco(){
		List<GrauParentesco> list = new DAOFactory().getGrauParentescoDAO().listaPorQuery("select distinct g.nomeDependencia from GrauParentesco g");
		for(Object g : list){
			lista.add(new SelectItem(g,g.toString()));
		}
		return lista;
	}

E Criei um Conversor Tb…

private GenericDAO<GrauParentesco> dao = new DAOFactory().getGrauParentescoDAO();

	public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {
		Map<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("GrauParentesco", value);	
		return dao.ObjetoPorCriterio("from GrauParentesco g where g.nomeDependencia = :GrauParentesco", parametros);
		
	}

	public String getAsString(FacesContext arg0, UIComponent arg1, Object object) {
		return ((GrauParentesco)object).getNomeDependencia();
	}

Mas ta Dando esse erro… Eu Até entendo mas n consigo resolver…

java.lang.String cannot be cast to Unimed.Entity.GrauParentesco

Se Alguem Puder me ajudar Fico mUito Agradecido :smiley:

16 Respostas

JonathanSSantos

Tu ta tentando converter uma string para um grau de parentesco e ele nao ta conseguindo fazer isto!

Tente fazerr um debbug e ver o local exato onde acontece o erro! E verifique se esta tudo correto!

L

vc registrou o conversor??

colored

Sim tá tudo Certo…
Meu Problema é na Lista…
Quando crio o metodo getGraudeParentesco…
Mas n consigo resolver.

JonathanSSantos

Quando tu coloca a lista pra aparecer na tela?!

colored

Tipo Assim…
Fiz um Teste…

public static void main(String[] args) { List<SelectItem> lista = new ArrayList<SelectItem>(); int i = 0; List<GrauParentesco> list = new DAOFactory().getGrauParentescoDAO().listaPorQuery("select distinct g.nomeDependencia from GrauParentesco g"); for(Object g : list){ lista.add(new SelectItem(g)); System.out.println(g); System.out.println(lista.get(i)); i++; } }

Quando eu faço a query e jogo na Lista de Grau De Parentesco blz… ele me traz tudo q preciso…
Mas quando eu jogo na lista de SelectItem pra poder aparecer na tela ele ta me trazendo o objeto…

ele printa assim

companheiro(a)
javax.faces.model.SelectItem@e496ab
cônjuge
javax.faces.model.SelectItem@15fc672
filha
javax.faces.model.SelectItem@dd8e0d
filho
javax.faces.model.SelectItem@1991de1
JonathanSSantos

Tenta fazer deste jeito e diz o que acontece!

L

se nao me engano o construtor SelectItem aceita dois argumentos um String e um Object tente usa-lo.

colored

Sim eu Já Usei… Assim
e Ja Usei os 2 Parametros tb…

L

Colocou a tag <converter no selectOne da pg Jsf??>

colored

Claro…
Tipo eu até descobri qual meu problema…

usar esse distinct funciona pra itens que o atributo era uma String por exemplo…
mas nesse caso eh um Objeto GrauParentesco…
Por isso o problema…

B

Se eu entendi bem o seu problema, você não precisa de um conversor para resolvê-lo:

  1. Você possui o método getGrauDeParentesco() em um MB, correto? Como você pode ver que ele retorna um List.

  2. Para exibi-lo, basta você utilizar o código abaixo como referência:

<h:selectOneMenu id="seuID" value="#{nomeDoMB.seuAtributo}">
	<f:selectItems value="#{nomeDoMB.grauDeParentesco}"/>
</h:selectOneMenu>

Será apresentado uma lista onde você poderá selecionar um dos itens. O valor do item selecionado estará disponível através do método “get” do atributo “seuAtributo”.

Se for isso que precisa… descarte o conversor.

  1. Altere o método getGrauDeParentesco(). Instancie o SelectItem da seguinte forma:
new SelectItem("umIdUnico", "Valor a ser exibido")
B

O seu SELECT retorna um String então é isso que deverá ser exibido no SelectItem

colored

Sim…
Ele retorna uma String. Porém eu tenho 1 metodo q dps q seleciono eu printo o q foi escolhido… ele da erro de conversao por q akilo está me retornando uma String porém o atributo no qual isso irá essa escolha é um Objeto… POr isso o erro.

rponte

colored:
Sim…
Ele retorna uma String. Porém eu tenho 1 metodo q dps q seleciono eu printo o q foi escolhido… ele da erro de conversao por q akilo está me retornando uma String porém o atributo no qual isso irá essa escolha é um Objeto… POr isso o erro.

Olá,

Talvez este post possa te ajudar,
http://www.rponte.com.br/2008/07/26/entity-converters-pra-da-e-vender/

Abraços e boa sorte.

closer

Rafael, li teu post e tentei implementar.
Acontece que quando crio o List com os meus objetos e tento carregá-los SelectOne, aparece um erro dizendo que eu deveria utilizar SelectItems.
Aquele código de conversor (SimpleEntityConverter) não deveria se encarregar de fazer isso?

closer

Ok, reli o post e acho que entendi qual o problema. hehe :oops:

Criado 4 de janeiro de 2010
Ultima resposta 18 de mar. de 2010
Respostas 16
Participantes 6