Dúvida com "Contrutores" nos ManagedBeans (JSF)

1 resposta
iuoyo

Bom dia Galera,

Estou com uma dúvida muito simples e tosca. Estou postando aqui porque acho que isso é de iniciante pois atualmente estou envolvido em um trabalho com JSF e justamente esses contrutores estão me dando problema.

Pois bem. Meu problema é o seguinte. Como todos sabem não existe destrutor em java porém preciso muito dele nos meus códigos. Pela falta de carência de tal método muito utilizado em C++, eu ultimamente Instâncio a variável que eu quero “Desconstruir”. Gostaria de saber se isso é correto, se tem algum problema. Por enquanto não tive problemas códigos e queria saber se tem alguma saída mais fácil. Vou postar um exemplo:

public class ContatoFaces {

    private ContatoDAO contatoDAO;
    private Contato contato;
    private LinkedList<Contato> listaDeContato;

    public ContatoFaces() {
        contato = new Contato();
        contatoDAO = new ContatoDAO();
        listaDeContato = new LinkedList<Contato>();
    }

    public String cadastrar() throws SQLException, ClassNotFoundException {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        UsuarioFaces usuarioFaces = (UsuarioFaces) facesContext.getApplication().createValueBinding("#{UsuarioFaces}").getValue(facesContext);

        contato.setUsuario(usuarioFaces.getUsuario());
        if (contatoDAO.create(contato)) {
            return "goToSucess";
        } else {
            return "goToError";
        }
    }

    public String limpar() {
        contato = new Contato();
        return "goToCadastrar";
    }

    public Contato getContato() {
        return contato;
    }

    public void setContato(Contato contato) {
        this.contato = contato;
    }

    public LinkedList<Contato> getListaDeContato() {
        return listaDeContato;
    }

    public void setListaDeContato(LinkedList<Contato> listaDeContato) {
        this.listaDeContato = listaDeContato;
    }
}

Esse exemplo acima eu me refiro ao atributo contato.

No método public String limpar(); eu preciso “zerar” ele pra não mostrar os campos nas páginas JSF. Se eu simplismente setar null, da erro na página. Se eu zerar o que for numérico fica aparecendo 0 nos campos <h:inputText/>.

Porém se eu instanciar eu não tenho esse problema, é como se chama-se o contrutor padrão (Que não está explicito no código). Fico no aguardo.

Abraços Rodrigo

1 Resposta

D

Comportamento normal do JSF. Isso acontece porque o escopo de ContatoFaces deve ser session.

Criado 14 de julho de 2010
Ultima resposta 14 de jul. de 2010
Respostas 1
Participantes 2