Caros amigos, comecei agora a usar JSF e Primefaces e não sei fazer um simples INCLUIR no bd com ManagedBean.
Já vi muitos vídeos e tutoriais mas sem bd ou com bd + hibernate e eu não uso hibernate. Minha dúvida maior é com o ManagedBean.
Meu pojo Pais:
package classe.modelo.vo;
public class Pais {
private int id;
private String descricao;
private String sigla;
private String codigo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
}
PaisDao:
package classe.modelo.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import classe.conexao.Conexao;
import classe.modelo.vo.Pais;
public class PaisDao {
static Connection conexao;
public PaisDao(){
conexao = Conexao.conectar();
}
public boolean inserir(Pais pais) throws SQLException{
try {
StringBuffer sql1 = new StringBuffer();
sql1.append("INSERT INTO pais (pais_id,pais_descricao,pais_sigla,pais_codigo) "
+ "VALUES (?, ?, ?, ?)");
PreparedStatement consulta1 = conexao.prepareStatement(sql1.toString());
consulta1.setInt(1, pais.getId());
consulta1.setString(2, pais.getDescricao());
consulta1.setString(3, pais.getCodigo());
consulta1.setString(4, pais.getSigla());
consulta1.execute();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
Meu formulário de cadastro.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Paises</title>
<style>
.ui-widget,
.ui-widget .ui-widget {
font-size: 12px !important;
}
</style>
</h:head>
<h:body>
<ui:include src="menu.xhtml"/>
<br/>
<h:form>
<p:panel header="Cadastro de paises">
<p:fieldset legend="Dados do País">
<h:panelGrid columns="2" width="900">
<h:column>
<h:outputLabel value="Nome"/>
</h:column>
<h:column>
<h:inputText id="descricao" size="40" value="#{paisBean.pais.descricao}"/>
</h:column>
<h:column>
<h:outputLabel value="Sigla"/>
</h:column>
<h:column>
<h:inputText id="sigla" size="10" value="#{paisBean.pais.sigla}"/>
</h:column>
<h:column>
<h:outputLabel value="Código"/>
</h:column>
<h:column>
<h:inputText id="codigo" size="10" value="#{paisBean.pais.codigo}"/>
</h:column>
</h:panelGrid>
</p:fieldset>
</p:panel>
<p:separator/>
<p:commandButton id="salvar" value="Salvar" action="#{paisBean.inserir}"/>
</h:form>
</h:body>
</html>
E meu managedbean paisBean:
package classe.controle.Beans;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import classe.modelo.dao.PaisDao;
import classe.modelo.vo.Pais;
@ManagedBean(name = "paisBean")
@SessionScoped
public class PaisBean {
private static Pais pais = new Pais();
private ArrayList<Pais> lista;
private PaisDao pdao = new PaisDao();
public void setLista(ArrayList<Pais> lista) {
this.lista = lista;
}
public ArrayList<Pais> getLista() {
return lista;
}
public void setPais(Pais pais) {
PaisBean.pais = pais;
}
public Pais getPais() {
return pais;
}
//método inserir no bd
public void inserir(String descricao, String sigla, String codigo){
pais.setDescricao(descricao);
pais.setSigla(sigla);
pais.setCodigo(codigo);
try {
pdao.inserir(pais);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Eu não sei como pegar os valores dos campos do formulário e setá-los para inserir no banco de dados.
Tentei deste modo mas sem sucesso.
Obrigado!