ae galerinah eu esto com ploblema em
JSF para fazer um conversor pessonalizado
pq quando tento grava no banco ele reclama que tenho que
converte o objeto em uma string para joga no banco
ir nao sei como fazer isso direito pq tenho que converte para um inteiro
ser alguem puder me ajuda agradeço
JSF Covensor
14 Respostas
Espero que te ajude.
Repare que tem dois métodos
Um que joga o objeto para o html e o outro que recupera o valor.
Eu acredito que a partir dai você terá uma ideia sobre o converter.
@FacesConverter(value="evento", forClass=Evento.class)
public class EventoConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
int valor=Integer.parseInt(value);
EventoDao eventoDao= new EventoDao(new Evento());
Object evento=eventoDao.recuperar(valor);
return evento;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
Evento evento=(Evento)value;
return String.valueOf(evento.getCodigo());
}
}
No xhtml ficaria assim:
<h:selectOneMenu id="tipoevento" converter="evento"
value="#{pessoaController.pessoa.evento}">
<f:selectItems
value="#{eventoController.todos}" var="item" itemLabel="#{item.nome}"
itemValue="#{item}"/>
</h:selectOneMenu>
cara muito obrigado por tenta me ajuda ja tinha um pouco de noçao
so nao entedi umas coisas como por exemplo este recupera que vem do dao
vc poderia me exemplica isso ??
ir este id tambem tipo de evento
ser puder agradeço
ae amigo eu tentei e da o seguinte erro objeto denomidado evento nao existe
cara muito obrigado por tenta me ajuda ja tinha um pouco de noçao
so nao entedi umas coisas como por exemplo este recupera que vem do dao
vc poderia me exemplica isso ??
ir este id tambem tipo de evento
ser puder agradeço
Vou explicar no primeiro método:
getAsObject
Ele com a String que ele vai pegar do html tem que recuperar seu objeto, no meu caso eu pego o código e busco no bando de Dados e recupero o objeto.
getAsString
Nesse método acontece o contrário você tem o seu objeto para virar uma String para jogar no seu html, no meu caso eu prefirir jogar o código para quando eu recuperar o objeto faça isso via DAO.
ae amigo eu tentei e da o seguinte erro objeto denomidado evento nao existe
Isso que eu te mostrei serve como base para o que você quer fazer.
É bem provavel que essa classe não vai existir em seu programa.
Você terá sua classe bean, sua classe dao e depois criará uma classe que implemente o Converter
Nas anotações você dirá o nome do seu conversor e para qual classe ela será usado.
Os dois métodos que você vai sobrescrever será basicamente para pegar o objeto e transformar em String e o outro pegar a String e recuperar o Ojbeto.
Acredito que eu expliquei um pouco melhor sobre isso na citação acima.
amiga brigado pela explicaçao melhor os metodos da classes converte
eu sabia o significado ir eu estava utilizado ele pelo xml do faces-conf.xml
bem fucionar de boa so que nao sei se esta classe esta correta ver ae amigo ver ser tem algum errado
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.br.Conversor;
import com.br.dados.Produtos;
import com.br.dados.Usuario;
import com.br.dao.UsuarioDao;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
/**
*
* @author guilherme
*/
@FacesConverter(value="evento" ,forClass=Usuario.class)
public class MyConvesor implements Converter {
UsuarioDao dao = new UsuarioDao();
Usuario usuario = new Usuario();
public MyConvesor() {
}
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Integer id = Integer.parseInt(value);
usuario.setId(id);
return usuario;
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
usuario = (Usuario) value;
return String.valueOf(usuario.getId());
}
}
Está legal.
Só que eu acho melhor você colocar o nome dele como usuário.
@FacesConverter(value="usuario" ,forClass=Usuario.class)
Outra coisa no método getObjetc vc deve usar o dao para recuperar o objeto, se não você simplesmente adiciona o id no objeto.
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Integer id = Integer.parseInt(value);
usuario=dao.recuperar(id);
return usuario;
}
vc quer dizer um byId para recupera no dao ne
Isso a idéia é partir do código recupera o objeto no dao
cara seria de mais ser eu pedisse este exemplo do recupera em hibernate
ser nao for pediu muito
agradeçeria ja esto uma semana pastando nisso ja tentei de tudo
ir agredito quer so falta isso ^^
ja agradeço deste ja
public Object recuperar(int cod) {
OpenSession();
Evento obj = (Evento) session.get(Evento.class, cod);
CloseSession();
return obj;
}
amigo agradeço deste ja a sua paciencia comigo
ainda nao conseguir ir nao queria mais alugar seu tempo
mais ainda nao desistir vou estuda mais espero
um dia conseguir ^^
brigado pela sua atençao comigo
abraços amigo
Posta o que está acontecendo.
Um dos objetivos do forum é ajudar um ao outro.
ae otavio vlw conseguir resolvir ploblema
hehe
flw abraço