Bom…tudo é mais facil se vc utilizar as ferramentas que te da um apoio.
- Primeiro aconselho voce utilizar o Hibernate e fazer a conexao.
- Segundo criar a lista de objeto que voce quer colocar no drop.
- Terceiro vamos jogar no jsp.
conexao hibernate. (pesquise qual é os dados do postgres)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.cglib.use_reflection_optimizer">
true
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.password">
root
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/decom
</property>
<property name="hibernate.connection.username">
root
</property>
<property name="hibernate.default_schema">
nomeSchema
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect
</property>
<property name="hibernate.show_sql">
false
</property>
<property name="hibernate.format_sql">
true
</property>
<mapping class="br.com.Decom.xxx.Estado" />
</session-factory>
</hibernate-configuration>
classe DAO generica
package br.com.XXXXXX.DAO;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import br.com.Decom.Util.HibernateUtil;
public class DAO<T> {
private static Logger logger = Logger.getLogger(DAO.class);
private Class<T> persistentClass;
private Session session = HibernateUtil.getSession();
public DAO(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
@SuppressWarnings("unchecked")
public T busca(Long id) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq("id", id));
c.add(Restrictions.eq("status", true));
T objeto = (T) c.uniqueResult();
// objeto = (T) session.load(persistentClass, id);
logger.info("LendoGenerico " + persistentClass + " com id " + id);
session.beginTransaction().commit();
return objeto;
}
@SuppressWarnings("unchecked")
public T busca(int id) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq("id", id));
c.add(Restrictions.eq("status", true));
T objeto = (T) c.uniqueResult();
// objeto = (T) session.load(persistentClass, id);
logger.info("LendoGenerico " + persistentClass + " com id " + id);
session.beginTransaction().commit();
return objeto;
}
@SuppressWarnings("unchecked")
public T busca(String idString) {
session.beginTransaction().begin();
Long id = Long.parseLong(idString);
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq("id", id));
c.add(Restrictions.eq("status", true));
T objeto = (T) c.uniqueResult();
// objeto = (T) session.load(persistentClass, id);
logger.info("LendoGenerico " + persistentClass + " com id " + id);
session.beginTransaction().commit();
return objeto;
}
@SuppressWarnings("unchecked")
public T buscaGenericaId(String coluna, Long id) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq(coluna, id));
c.add(Restrictions.eq("status", true));
T objeto = (T) c.uniqueResult();
// objeto = (T) session.load(persistentClass, id);
logger.info("LendoGenerico " + persistentClass + " com id " + id);
session.beginTransaction().commit();
return objeto;
}
@SuppressWarnings("unchecked")
public List<T> buscaGenerica(String coluna, String nome) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.ilike(coluna, nome, MatchMode.ANYWHERE));
c.add(Restrictions.eq("status", true));
session.beginTransaction().commit();
return c.list();
}
@SuppressWarnings("unchecked")
public List<T> buscaGenerica(String coluna, Long numero) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq(coluna, numero));
c.add(Restrictions.eq("status", true));
session.beginTransaction().commit();
return c.list();
}
@SuppressWarnings("unchecked")
public List<T> buscaGenerica(String coluna, int numero) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq(coluna, numero));
c.add(Restrictions.eq("status", true));
session.beginTransaction().commit();
return c.list();
}
@SuppressWarnings("unchecked")
public List<T> buscaGenerica(String coluna, String nome, String coluna2,
String nome2) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.ilike(coluna, nome, MatchMode.ANYWHERE));
c.add(Restrictions.ilike(coluna2, nome2, MatchMode.ANYWHERE));
c.add(Restrictions.eq("status", true));
session.beginTransaction().commit();
return c.list();
}
@SuppressWarnings("unchecked")
public List<T> buscaLogin(String coluna, String nome, String coluna2,
String nome2) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq(coluna, nome));
c.add(Restrictions.eq(coluna2, nome2));
c.add(Restrictions.eq("status", true));
session.beginTransaction().commit();
return c.list();
}
@SuppressWarnings("unchecked")
public List<T> buscaGenerica(String coluna, Long idColuna, String coluna2,
Long idColuna2) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq(coluna, idColuna));
c.add(Restrictions.eq(coluna2, idColuna2));
c.add(Restrictions.eq("status", true));
session.beginTransaction().commit();
return c.list();
}
@SuppressWarnings("unchecked")
public List<T> buscaLista() {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.eq("status", true));
List<T> lista = c.list();
// session.beginTransaction().begin();
// logger.info("ListandoTodosGenerico " + persistentClass );
// List<T> lista = session.createCriteria(persistentClass).list();
session.beginTransaction().commit();
return lista;
}
public void salva(T t) {
session.beginTransaction().begin();
logger.info("SalvandoGenerico " + t);
session.save(t);
session.beginTransaction().commit();
}
public void atualiza(T t) {
session.beginTransaction().begin();
logger.info("AtualizandoGenerico " + t);
session.update(t);
session.beginTransaction().commit();
}
public void merge(T t) {
logger.info("Salvando ou atualizando" + t);
session.merge(t);
}
public void deleta(T t) {
session.beginTransaction().begin();
logger.info("DeletandoGenerico do id = " + t);
session.update(t);
session.beginTransaction().commit();
}
/*
* Codigo para deletar realmente do Banco public void remove(T t){
* session.beginTransaction().begin();
* logger.info("DeletandoGenerico do id = " + t); session.delete(t);
* session.beginTransaction().commit(); }
*/
}
classe modelo
package br.com.XXXXX.Model;
// Generated 20/07/2011 15:01:15 by Hibernate Tools 3.1.0.beta4
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import org.hibernate.annotations.Type;
/**
* Estado generated by hbm2java
*/
@Entity
public class Estado {
// Fields
@Id
@GeneratedValue
private Long id;
private String nome;
private String sigla;
@Type(type = "true_false")
private boolean status;
@OneToMany(mappedBy = "estado", fetch = FetchType.LAZY)
// @Where(clause = "status='T'")
private List<Cidade> cidades;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public List<Cidade> getCidades() {
return cidades;
}
public void setCidades(List<Cidade> cidades) {
this.cidades = cidades;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
result = prime * result + ((sigla == null) ? 0 : sigla.hashCode());
result = prime * result + (status ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Estado other = (Estado) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (nome == null) {
if (other.nome != null)
return false;
} else if (!nome.equals(other.nome))
return false;
if (sigla == null) {
if (other.sigla != null)
return false;
} else if (!sigla.equals(other.sigla))
return false;
if (status != other.status)
return false;
return true;
}
@Override
public String toString() {
return nome;
}
}
manager beam(essa vai fazer interação direta com a tela)
package br.com.XXXXX.ManergerBeam;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import br.com.XXXXX.DAO.DAO;
import br.com.XXXX.Model.Estado;
@ManagedBean
@ViewScoped
public class mbEstado {
static DAO<Estado> daoEstado = new DAO<Estado>(Estado.class);
List<Estado> listaEstado;
private Estado estado = new Estado();
private Estado estadoNovo = new Estado();
private Estado estadoSelecionado = new Estado();
public mbEstado() {
// TODO Auto-generated constructor stub
attLista();
}
public String Salvar() {
estado.setStatus(true);
daoEstado.salva(estado);
listaEstado.add(estado);
daoEstado = new DAO<Estado>(Estado.class);
estado = new Estado();
attLista();
return "ok";
}
public String Editar() {
daoEstado.atualiza(estado);
estado = new Estado();
daoEstado = new DAO<Estado>(Estado.class);
listaEstado = new ArrayList<Estado>();
listaEstado = daoEstado.buscaLista();
// attLista();
return "ok";
}
public String Deletar() {
atualizaCampos();
estado.setStatus(false);
daoEstado.salva(estado);
daoEstado = new DAO<Estado>(Estado.class);
estado = new Estado();
attLista();
return "ok";
}
public String atualizaCampos() {
estado = estadoSelecionado;
return "ok";
}
public void setListaEstado(List<Estado> listaEstado) {
this.listaEstado = listaEstado;
}
public List<Estado> getListaEstado() {
attLista();
return listaEstado;
}
public static Estado buscaEstado(Long idEstado) {
Estado estado = daoEstado.busca(idEstado);
return estado;
}
public static Estado buscaEstado(String idEstado) {
Estado estado = daoEstado.busca(idEstado);
return estado;
}
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
public String attLista() {
listaEstado = daoEstado.buscaLista();
return "ok";
}
public Estado getEstadoSelecionado() {
return estadoSelecionado;
}
public void setEstadoSelecionado(Estado estadoSelecionado) {
this.estadoSelecionado = estadoSelecionado;
}
public Estado getEstadoNovo() {
return estadoNovo;
}
public void setEstadoNovo(Estado estadoNovo) {
this.estadoNovo = estadoNovo;
}
}
pagina web em xhtml utilizando jsf2.0 (cadastra cidade)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="pt-br" xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
</h:head>
<h:body>
<div id="Conteudo">
<h:panelGrid>
<h:column>
<p:fieldset legend="Cidade">
<h:panelGrid id="pgEstoqueCategoria" columns="2">
<h:outputText value="Estado:"></h:outputText>
<h:column>
<p:selectOneMenu value="#{mbCidade.estado}" required="true" converter="cvEstado"
requiredMessage="Valor é obrigatório" >
<f:selectItem itemLabel="--- Selecione ---" itemValue="0" />
<f:selectItems id="listaOsEstados" value="#{mbEstado.listaEstado}" var="a" itemValue="#{a}" itemLabel="#{a.nome}" />
</p:selectOneMenu>
</h:column>
<h:outputText value="Cidade:"></h:outputText>
<h:inputText value="#{mbCidade.cidadeNova.nome}" />
<h:column></h:column>
<p:commandButton value="Salvar" ajax="false" action="#{mbCidade.Salvar}" />
</h:panelGrid>
</p:fieldset>
<!-- FIM FORM -->
</h:column>
<!-- FIM COLUNA GERAL -->
</h:panelGrid>
<!-- FIM PAINEL GERAL -->
</div>
</h:body>
</html>
Conversor( Com isso voce passa o Objeto COMPLETO, e nao só o Id)
package br.com.Decom.Conversores;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import br.com.Decom.DAO.DAO;
import br.com.Decom.Model.Estado;
@FacesConverter("cvEstado")
public class cvEstado implements Converter {
DAO<Estado> dao = new DAO<Estado>(Estado.class);
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
try {
return dao.busca(arg2);
} catch (NumberFormatException e) {
return new Estado();
}
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
try {
return String.valueOf(((Estado) arg2).getId());
} catch (Exception e) {
return "";
}
}
}
pode parecer muita coisa… mais acredito q seguindo esses passos se for feito…o seu codigo fica organizado e facil de utilizar…