Criando beans com DWR. Dúvida

2 respostas
ruyoutor

Fala galera.

Alguem tem ou sabe onde posso encotrar alguma especificação de como tem que ser um bean para o dwr converte para javascript. Calma gente não me crucifiquem ainda deixa eu explicar.

Estou usando o dwr para levar algumas listas de beans para o lado cliente e preencher combos e coisas do tipo só que tem duas classes que ele não consegue converter de jeito nenhum eu crio os metodos no java os métodos estão funcionando porque já testei a lista é abastecida, mas quando vou testar o método pelo dwr ele me exibi os valores nulos ele indentifica a quantidade de objetos no list mas me mostra tudo null. Por Exemplo se eu tenho 3 objetos na minha lista quando eu pucho pelo lado do cliente ele me amostra uma janela de alert assim:

[null, null, null ]

Essas duas classes estão mapeadas no dwr.xml, mas por algum motivo não funciona. Já fiz o mesmo procedimento em outras e funciona perfeitamente.
Os tipos que eu tenho nessas duas classes são:
Long, Double, Boolean, Integer, String, Date, Collection e outros objetos beans que eu também já mapeei estou usando o JPA para persistencia e minhas classes beans foram criadas automaticamente pelo mecánismo do netbeans.

Se alguem já teve esse problema ou souber como resolver eu agradeço.
Se eu não tiver sido claro é só perguntar que eu tento explicar melhor.

Obrigado.

2 Respostas

psandrelli

Posta o código aew.

ruyoutor

Essa é a classe que não funciona

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.terminalweb.jpa.model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author ruydede
 */
@Entity
@Table(name = "Horario")
@NamedQueries({@NamedQuery(name = "Horario.findByCdHorario", query = "SELECT h FROM Horario h WHERE h.cdHorario = :cdHorario"),
@NamedQuery(name = "Horario.findByNmJogo", query = "SELECT h FROM Horario h WHERE h.nmJogo = :nmJogo"),
@NamedQuery(name = "Horario.findByHoraTermino", query = "SELECT h FROM Horario h WHERE h.horaTermino = :horaTermino"),
@NamedQuery(name = "Horario.findByLimitePremio", query = "SELECT h FROM Horario h WHERE h.limitePremio = :limitePremio"),
@NamedQuery(name = "Horario.findByLimiteJogo", query = "SELECT h FROM Horario h WHERE h.limiteJogo = :limiteJogo"),
@NamedQuery(name = "Horario.findByBanca", query = "SELECT h FROM Horario h WHERE h.cdBanca = :cdBanca"),
@NamedQuery(name = "Horario.findaBySorteio", query = "SELECT h FROM Horario h WHERE h.cdSorteio = :cdSorteio")})
public class Horario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "CdHorario", nullable = false)
    private String cdHorario;
    
    @Column(name = "NmJogo")
    private String nmJogo;
    
    @Column(name = "HoraTermino")
    private String horaTermino;
    
    @Column(name = "LimitePremio")
    private Long limitePremio;
    
    @Column(name = "LimiteJogo")
    private Long limiteJogo;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "cdHorario")
    private Collection<JogoTransicao> jogoTransicaoCollection;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "cdHorario")
    private Collection<Poule> pouleCollection;
    
    @JoinColumn(name = "CdBanca", referencedColumnName = "cdBanca")
    @ManyToOne
    private Banca cdBanca;
    
    @JoinColumn(name = "cdSorteio", referencedColumnName = "cdSorteio")
    @ManyToOne
    private Sorteio cdSorteio;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "cdHorario")
    private Collection<Resultado> resultadoCollection;

    public Horario() {
    }

    public Horario(String cdHorario) {
        this.cdHorario = cdHorario;
    }

    public String getCdHorario() {
        return cdHorario;
    }

    public void setCdHorario(String cdHorario) {
        this.cdHorario = cdHorario;
    }

    public String getNmJogo() {
        return nmJogo;
    }

    public void setNmJogo(String nmJogo) {
        this.nmJogo = nmJogo;
    }

    public String getHoraTermino() {
        return horaTermino;
    }

    public void setHoraTermino(String horaTermino) {
        this.horaTermino = horaTermino;
    }

    public Long getLimitePremio() {
        return limitePremio;
    }

    public void setLimitePremio(Long limitePremio) {
        this.limitePremio = limitePremio;
    }

    public Long getLimiteJogo() {
        return limiteJogo;
    }

    public void setLimiteJogo(Long limiteJogo) {
        this.limiteJogo = limiteJogo;
    }

    public Collection<JogoTransicao> getJogoTransicaoCollection() {
        return jogoTransicaoCollection;
    }

    public void setJogoTransicaoCollection(Collection<JogoTransicao> jogoTransicaoCollection) {
        this.jogoTransicaoCollection = jogoTransicaoCollection;
    }

    public Collection<Poule> getPouleCollection() {
        return pouleCollection;
    }

    public void setPouleCollection(Collection<Poule> pouleCollection) {
        this.pouleCollection = pouleCollection;
    }

    public Banca getCdBanca() {
        return cdBanca;
    }

    public void setCdBanca(Banca cdBanca) {
        this.cdBanca = cdBanca;
    }

    public Sorteio getCdSorteio() {
        return cdSorteio;
    }

    public void setCdSorteio(Sorteio cdSorteio) {
        this.cdSorteio = cdSorteio;
    }

    public Collection<Resultado> getResultadoCollection() {
        return resultadoCollection;
    }

    public void setResultadoCollection(Collection<Resultado> resultadoCollection) {
        this.resultadoCollection = resultadoCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cdHorario != null ? cdHorario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Horario)) {
            return false;
        }
        Horario other = (Horario) object;
        if ((this.cdHorario == null && other.cdHorario != null) || (this.cdHorario != null && !this.cdHorario.equals(other.cdHorario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.terminalweb.jpa.model.Horario[cdHorario=" + cdHorario + "]";
    }

}

essa classe eu preencho a lista com os horarios

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.terminalweb.jpa.dao;

import com.terminalweb.jpa.model.Banca;
import java.util.List;

/**
 *
 * @author ruydede
 */
public class HorarioDao extends BaseDao {

    public HorarioDao() {
    }

    public List<?> listHorarios(Banca cdBanca) {
        List<?> lstHorarios = search("Horario.findByBanca", "cdBanca", cdBanca);
        return lstHorarios;

    }
}

essa é a classe que eu levo para o javascript

/**
 *
 * @author ruydede
 */
public class FacadeAjax {
    
        public List<Horario> loadHorarios() throws Exception {
        HorarioDao hd = new HorarioDao();
        SessionFacade sf = new SessionFacade();
        List<Horario> lstHorario = (List<Horario>) hd.listHorarios((Banca) sf.getAttribute("banca"));
        LinkedHashMap hm = new LinkedHashMap();
        return  lstHorario;

    }
}

esse é o meu dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" 
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
    <allow>
        <create creator="new" javascript="JDate">
            <param name="class" value="java.util.Date"/>
        </create>
        <create creator="new" javascript="FacadeAjax">
            <param name="class" value="com.terminalweb.dwr.facade.FacadeAjax"/>
        </create>
        <convert converter="bean" match="com.terminalweb.jpa.model.Banca"/>
        <convert converter="bean" match="com.terminalweb.jpa.model.Sorteio"/>
        <convert converter="bean" match="com.terminalweb.jpa.model.Horario"/>
    </allow>
</dwr>

Eu estou tendo problemas com a classe horario e banca mais banca eu não posso postar por motivo de segurança
Acho que já da para ter uma noção no que estou errando.

Criado 10 de janeiro de 2008
Ultima resposta 10 de jan. de 2008
Respostas 2
Participantes 2