JSF Covensor

14 respostas
xxjamisxx

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

14 Respostas

otaviojava

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>
xxjamisxx

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

xxjamisxx

ae amigo eu tentei e da o seguinte erro objeto denomidado evento nao existe

otaviojava

xxjamisxx:
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.

otaviojava

xxjamisxx:
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.

xxjamisxx

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());
    }


}
otaviojava

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;  
    }
xxjamisxx

vc quer dizer um byId para recupera no dao ne

otaviojava

Isso a idéia é partir do código recupera o objeto no dao

xxjamisxx

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

otaviojava
public Object recuperar(int cod) {
        OpenSession();
        Evento obj = (Evento) session.get(Evento.class, cod);
        CloseSession();
        return obj;
    }
xxjamisxx

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

otaviojava

Posta o que está acontecendo.
Um dos objetivos do forum é ajudar um ao outro.

xxjamisxx

ae otavio vlw conseguir resolvir ploblema
hehe
flw abraço

Criado 2 de janeiro de 2011
Ultima resposta 5 de jan. de 2011
Respostas 14
Participantes 2