[RESOVIDO] Erro louco de parâmetro

3 respostas
L

Eu estou utilizando construtores parametrizados para 2 das minhas classes. Esse é o construtor delas:

public class Pesquisar extends javax.swing.JFrame {
    String perfilAtual;

    public Pesquisar(String perfilAtualParam) {
        perfilAtual = perfilAtualParam;
        System.out.println(perfilAtual);
        initComponents();
        preencheJTable(ordem);
    }
public class Alimentos extends javax.swing.JFrame {
    String perfilAtual;       

    public Alimentos(String perfilAtualParam) {
        perfilAtual = perfilAtualParam;
        initComponents();
    }

Tenho um JFrame Autenticacao, onde o usuário selecionada o Perfil. Esse frame é passado como parâmetro para TelaPrincipal, onde eu pego qual perfil foi selecionado (propriedade perfilAtual). Desta forma:

public class TelaPrincipal extends javax.swing.JFrame {
    public String perfilAtual;

    public TelaPrincipal(Autenticacao autenticacao) {
        perfilAtual = autenticacao.perfilAtual;
        initComponents();
    }

Eu as inicio da seguinte maneira:

private void cadastrarAlimentosActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        new alimentos.Alimentos(perfilAtual).setVisible(true);
    }                                                  

    private void visualizarAlimentosActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        new alimentos.Pesquisar(perfilAtual).setVisible(true);
    }

Eu usei 2 perfis "Luis" e "Paulo" para testar. Tudo corre perfeitamente. perfilAtual está correto em TelaPrincipal, é passado corretamente para Alimentos, e perfilAtual fica correto no frame Alimentos.

Porém o que está me deixado doido é que em Pesquisar, eu passo um perfil qualquer, como Paulo, ou "teste", como eu criei, e em Pesquisar tanto o parâmetro perfilAtualParam quanto a propriedade perfilAtual ficam valendo "Luis"

Alguém poderia me explicar porque diabos isso está acontecendo por favor? Como pode eu passar um parâmetro e ele se tornar outro sem motivo algum? Muito obrigado!

3 Respostas

alanrodrigues

Cara, não estou vendo erro algum neste código.
Tente dar uma nova instância pra string na classe Pesquisar

String perfilAtual = new String();

Mas provavelmente vc está passando algum parâmetro errado.
Tente debuggar e seguir passo a passo…

L

Solucionado. Por mais estranho que pareça é por causa de um Criteria do Hibernate que eu estava usando no meio do meu código.

Antes estava:

Criteria criteria = sessao.createCriteria(utilitarios.Food.class).add(Restrictions.eq("perfil", perfilAtual));; if(ordem.equalsIgnoreCase("asc")) criteria.addOrder(Order.asc(ordenacao)); else if (ordem.equalsIgnoreCase("desc")) criteria.addOrder(Order.desc(ordenacao));

Modificado para:

Criteria criteria = sessao.createCriteria(utilitarios.Food.class); if(ordem.equalsIgnoreCase("asc")) criteria.addOrder(Order.asc(ordenacao)).add(Restrictions.eq("perfil", perfilAtual));; else if (ordem.equalsIgnoreCase("desc")) criteria.addOrder(Order.desc(ordenacao));

O Restriction só ocorria em um IF que não existia ainda. Não tenho ideia porque isso mudou um parâmetro que era executado no construtor, mas por algum motivo resolveu.

alanrodrigues

Blz…
tem que editar o tópico e adicionar [RESOLVIDO]

Criado 1 de março de 2012
Ultima resposta 2 de mar. de 2012
Respostas 3
Participantes 2