Acho q fica mais facil se eu mostrar os fontes.
Classe CadastroVisita:
[code]/**
*/
package br.com.xxx.sgv.cadastro.visita;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import br.com.xxx.sgv.cadastro.cliente.CadastroCliente;
import br.com.xxx.sgv.cadastro.rm.CadastroRM;
@Entity
public class CadastroVisita {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String descricao;
@Temporal(TemporalType.DATE)
private Calendar data = new GregorianCalendar();
@ManyToOne
private CadastroRM cadastroRM;
@ManyToOne
private CadastroCliente cadastroCliente;
public CadastroCliente getCadastroCliente() {
return cadastroCliente;
}
public void setCadastroCliente(CadastroCliente cadastroCliente) {
this.cadastroCliente = cadastroCliente;
}
public CadastroRM getCadastroRM() {
return cadastroRM;
}
public void setCadastroRM(CadastroRM cadastroRM) {
this.cadastroRM = cadastroRM;
}
public Calendar getData() {
return data;
}
public void setData(Calendar data) {
this.data = data;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
[/code]
Classe VisitaHandler:
[code]/**
*/
package br.com.xxx.sgv.cadastro.visitahandler;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.el.VariableResolver;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.hibernate.Session;
import br.com.xxx.sgv.cadastro.rm.CadastroRM;
import br.com.xxx.sgv.cadastro.rmhandler.RMHandler;
import br.com.xxx.sgv.cadastro.visita.CadastroVisita;
import br.com.xxx.sgv.dao.DAO;
import br.com.xxx.sgv.hibernate.hibernateutil.HibernateUtil;
public class VisitaHandler {
private CadastroVisita cadastroVisita = new CadastroVisita();
private HtmlSelectOneMenu htmlSelectOneMenuVisita;
public CadastroVisita getCadastroVisita() {
return cadastroVisita;
}
public void setCadastroVisita(CadastroVisita cadastroVisita) {
this.cadastroVisita = cadastroVisita;
}
public List<SelectItem> getRMS() {
List<SelectItem> lista = new ArrayList<SelectItem>();
List<CadastroRM> cadastroRMList = getRMHandler().getAllCadastroRM();
for (CadastroRM cadastroRM : cadastroRMList) {
// Só aceita String por isso estou convertendo o long do id com o
// .toString()
SelectItem selectItem = new SelectItem(cadastroRM.getId(),
cadastroRM.getNomeRM());
lista.add(selectItem);
}
return lista;
}
// Pega a lista criada sem precisar dar new no FornecedorHandler do método
// getFornecedores.
private RMHandler getRMHandler() {
FacesContext facesContext = FacesContext.getCurrentInstance();
VariableResolver variableResolver = facesContext.getApplication()
.getVariableResolver();
// Tenho que passar o facesContext e também o managedBean
return (RMHandler) variableResolver.resolveVariable(facesContext,
"rmHandler");
}
public void salvar(ActionEvent actionEvent) {
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroRM> cadastroRMDao = new DAO<CadastroRM>(session,
CadastroRM.class);
long id = Long.parseLong(htmlSelectOneMenuVisita.getValue().toString());
CadastroRM cadastroRM = cadastroRMDao.load(id);
cadastroVisita.setCadastroRM(cadastroRM);
DAO<CadastroVisita> dao = new DAO<CadastroVisita>(session,
CadastroVisita.class);
dao.salveOrUpdate(this.cadastroVisita);
this.cadastroVisita = new CadastroVisita();
}
public List<CadastroVisita> getContas() {
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroVisita> dao = new DAO<CadastroVisita>(session,
CadastroVisita.class);
return dao.list();
}
public HtmlSelectOneMenu getHtmlSelectOneMenuVisita() {
return htmlSelectOneMenuVisita;
}
public void setHtmlSelectOneMenuVisita(
HtmlSelectOneMenu htmlSelectOneMenuVisita) {
this.htmlSelectOneMenuVisita = htmlSelectOneMenuVisita;
}
}
[/code]
Classe VisitaDAO:
[code]/**
*/
package br.com.xxx.sgv.cadastro.visitadao;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import br.com.xxx.sgv.cadastro.visita.CadastroVisita;
public class VisitaDAO {
private Session session;
private Logger logger = Logger.getLogger(CadastroVisita.class);
public VisitaDAO(Session session) {
logger.info("Construtor" + session);
this.session = session;
}
/**
* @verifica salva novos dados no sistema
*/
public void salvaDados(CadastroVisita cadastroVisita) {
session.saveOrUpdate(cadastroVisita);
}
/**
* @verifica exclui os dados do sistema
*/
public void excluiDados(CadastroVisita cadastroVisita) {
session.delete(cadastroVisita);
}
@SuppressWarnings("unchecked")
public CadastroVisita selecionaDados(CadastroVisita cadastroVisita) {
return (CadastroVisita) session.load(CadastroVisita.class,
cadastroVisita.getId());
}
}
[/code]
Classe CadastroRM:
[code]/**
*/
package br.com.xxx.sgv.cadastro.rm;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class CadastroRM {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String nomeRM;
private String CPF;
private String RG;
private String Ramal;
private String telefoneResidencial;
private String celular;
private String email;
private boolean ativo;
public boolean isAtivo() {
return ativo;
}
public void setAtivo(boolean ativo) {
this.ativo = ativo;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getCPF() {
return CPF;
}
public void setCPF(String cpf) {
CPF = cpf;
}
public String getNomeRM() {
return nomeRM;
}
public void setNomeRM(String nomeRM) {
this.nomeRM = nomeRM;
}
public String getRamal() {
return Ramal;
}
public void setRamal(String ramal) {
Ramal = ramal;
}
public String getRG() {
return RG;
}
public void setRG(String rg) {
RG = rg;
}
public String getTelefoneResidencial() {
return telefoneResidencial;
}
public void setTelefoneResidencial(String telefoneResidencial) {
this.telefoneResidencial = telefoneResidencial;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
[/code]
Classe RMHandler:
[code]/**
*/
package br.com.xxx.sgv.cadastro.rmhandler;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.event.ActionEvent;
import org.hibernate.Session;
import br.com.xxx.sgv.cadastro.rm.CadastroRM;
import br.com.xxx.sgv.dao.DAO;
import br.com.xxx.sgv.hibernate.hibernateutil.HibernateUtil;
public class RMHandler {
private CadastroRM cadastroRM = new CadastroRM();
/*
* private long sequence = 0;
*
* public long getSequence() { return sequence ; }
*/
public void salvar() {
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroRM> dao = new DAO<CadastroRM>(session, CadastroRM.class);
if (cadastroRM.getId() == 0) {
dao.salveOrUpdate(this.cadastroRM);
} else {
session.merge(this.cadastroRM);
}
this.cadastroRM = new CadastroRM();
}
public void excluir() {
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroRM> dao = new DAO<CadastroRM>(session, CadastroRM.class);
dao.deleta(this.cadastroRM);
}
public void selecionaDados() {
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroRM> dao = new DAO<CadastroRM>(session, CadastroRM.class);
dao.load((long) cadastroRM.getId());
}
public CadastroRM getCadastroRM() {
return cadastroRM;
}
public void setCadastroRM(CadastroRM cadastroRM) {
this.cadastroRM = cadastroRM;
}
public List<CadastroRM> getAllCadastroRM() {
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroRM> dao = new DAO<CadastroRM>(session, CadastroRM.class);
return dao.list();
}
public void carregaCadastroRM(ActionEvent event) {
UIComponent comandLink = event.getComponent();
UIParameter parameter = (UIParameter) comandLink
.findComponent("editId");
Long id = (Long) parameter.getValue();
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroRM> dao = new DAO<CadastroRM>(session, CadastroRM.class);
this.cadastroRM = dao.load(id);
}
public void excluirCadastroRM(ActionEvent event) {
UIComponent comandLink = event.getComponent();
UIParameter parameter = (UIParameter) comandLink
.findComponent("editId");
Long id = (Long) parameter.getValue();
Session session = HibernateUtil.getCurrentSession();
DAO<CadastroRM> dao = new DAO<CadastroRM>(session, CadastroRM.class);
this.cadastroRM = dao.load(id);
dao.deleta(cadastroRM);
this.cadastroRM = new CadastroRM();
}
}
[/code]
Classe RMDAO:
[code]/**
*/
package br.com.xxx.sgv.cadastro.rmdao;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import br.com.xxx.sgv.cadastro.rm.CadastroRM;
public class RMDAO {
private Session session;
private Logger logger = Logger.getLogger(CadastroRM.class);
public RMDAO(Session session) {
logger.info("Construtor" + session);
this.session = session;
}
/**
* @verifica salva novos dados no sistema
*/
public void salvaDados(CadastroRM cadastroRM) {
session.saveOrUpdate(cadastroRM);
}
/**
* @verifica exclui os dados do sistema
*/
public void excluiDados(CadastroRM cadastroRM) {
session.delete(cadastroRM);
}
@SuppressWarnings("unchecked")
public CadastroRM selecionaDados(CadastroRM cadastroRM) {
return (CadastroRM) session.load(CadastroRM.class, cadastroRM.getId());
}
}
[/code]
CadastroVisita.jsp
[code]<%@ page contentType=“text/html; charset=UTF-8” %>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://myfaces.apache.org/tomahawk” prefix=“t” %>
Cadastro de Visita
[/code]
É isso, o problema tá q o selectOneMenu dá um pau e gera akeles erros, se eu tiro ele a pagina abre normalmente…