Olá pessoal, sou novo membro do Guj, e estou iniciando em JSF, estou com um problema que não consigo fazer a inserção dos dados
no banco, o banco de dados que estou utlizando é o Postgresql 8.1, a IDE é o Eclipse.
Minha aplicação possui um package br.com.patterns.web.usuario.
Neste packege tenho duas classes, sendo uma a UsuarioVO, que tem os gets e sets com o campos que modelam o
banco de dados, no caso seria meu MODEL, e minha classe UsuarioFormBean, onde instancio a classe UsuarioVO, e
instancio a classe UsuarioFacade.
no outro package br.com.patterns.web.facade, tenho a interface UsuarioFacade que possui a anotação dos meus dois
metodos inserir e o metodo listar, e a classe que implementa está interface UsuarioFacadeImpl onde instancio a
minha classe UsuarioDAO, a classe UsuarioFacadeImpl seria meu Control, que acessa a classe DAO para persistir
no banco.
e o meu ultimo package é o br.com.patterns.web.usuariodao, que também contém uma inteface da UsuarioDAO e a
UsuarioDAOImpl que possui a implementação dos meus dois metodos, inserir e listar.
[color=#444444][color=red]está é meu UsuarioVO:[/color][/color]
[code]public class UsuarioVO {
private int id;
private String name;
private String endereco;
private String bairro;
private String cep;
private String cidade;
private String cpf;
private String rg;
private String fisJur;
private String funcao;
private String dataCad;
private String contanto;
private String observ;
private String telefone;
private String inscricaoCliente;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;....getters e setters[/code]
[color=red]aqui vai o código da minha classe UsuarioFormBean:[/color]
[code]package br.com.patterns.web.usuario;
import java.util.List;
import br.com.patterns.web.facade.UsuarioFacade;
import br.com.patterns.web.facade.UsuarioFacadeImpl;
public class UsuarioFormBean {
private UsuarioVO usuarioVO = new UsuarioVO();
private UsuarioFacade facade = new UsuarioFacadeImpl();
public UsuarioVO getUsuarioVO() {
return usuarioVO;
}
public void setUsuarioVO(UsuarioVO usuarioVO) {
this.usuarioVO = usuarioVO;
}
public String inserir(){
facade.inserir(usuarioVO);
return "sucesso";
}
public List<UsuarioVO> getUsuarios(){
return facade.listar();
}
}[/code]
[color=orange]está é minha classe de implementação UsuarioFacadeImpl:[/color]
[code]package br.com.patterns.web.facade;
import java.util.List;
import br.com.patterns.web.dao.UsuarioDAO;
import br.com.patterns.web.dao.UsuarioDAOImpl;
import br.com.patterns.web.usuario.UsuarioVO;
public class UsuarioFacadeImpl implements UsuarioFacade {
public UsuarioDAO dao = new UsuarioDAOImpl();
public void inserir(UsuarioVO usuarioVo) {
dao.inserir(usuarioVo);
}
public List<UsuarioVO> listar() {
return dao.listar();
}
}[/code]
[color=red]está é a interface da classe usuariofacade:[/color]
[code]package br.com.patterns.web.facade;
import java.util.List;
import br.com.patterns.web.usuario.UsuarioVO;
public interface UsuarioFacade {
public void inserir(UsuarioVO usuarioVo);
public List<UsuarioVO> listar();
}[/code]
[color=orange]está é minha classe de implementação UsuarioDAOImpl:[/color]
[code]package br.com.patterns.web.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import br.com.patterns.web.usuario.UsuarioVO;
public class UsuarioDAOImpl implements UsuarioDAO {
public static Connection getConnection()throws Exception{
Class.forName("org.postgres.Driver");
return DriverManager.getConnection("jdbc:postgresql://localhost:5432/softcom","postgres","postgres");
}
private static void closeConnection(Connection con, PreparedStatement pstmt){
try {
if(con != null){
con.close();
}
if(pstmt != null)
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void closeConnection(Connection con, Statement stmt){
try {
if(con != null){
con.close();
}
if(stmt != null)
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void inserir(UsuarioVO usuarioVO) {
Connection con = null;
PreparedStatement pstmt = null;
try {
String sql = "INSERT INTO CLIENTE VALUE(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
con = getConnection();
con.setAutoCommit(false);
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, usuarioVO.getId());
pstmt.setString(2, usuarioVO.getName());
pstmt.setString(3, usuarioVO.getEndereco());
pstmt.setString(4, usuarioVO.getBairro());
pstmt.setString(5, usuarioVO.getCep());
pstmt.setString(6, usuarioVO.getCidade());
pstmt.setString(7, usuarioVO.getCpf());
pstmt.setString(8, usuarioVO.getRg());
pstmt.setString(9, usuarioVO.getFisJur());
pstmt.setString(10, usuarioVO.getFuncao());
pstmt.setString(11, usuarioVO.getDataCad());
pstmt.setString(12, usuarioVO.getContanto());
pstmt.setString(13, usuarioVO.getObserv());
pstmt.setString(14, usuarioVO.getTelefone());
pstmt.setString(15, usuarioVO.getInscricaoCliente());
pstmt.executeUpdate();
con.commit();
} catch (Exception e) {
try{
con.rollback();
}catch(SQLException ex){}
}finally{
closeConnection(con, pstmt);
}
}
public List<UsuarioVO> listar() {
Connection con = null;
Statement stmt = null;
List<UsuarioVO> list = new ArrayList<UsuarioVO>();
try {
String sql = "SELECT * FROM usuario";
con = getConnection();
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
UsuarioVO usuVO = new UsuarioVO();
usuVO.setName(rs.getString(1));
usuVO.setEndereco(rs.getString(2));
usuVO.setTelefone(rs.getString(3));
list.add(usuVO);
}
} catch (Exception e) {
try{
con.rollback();
}catch(SQLException ex){}
}finally{
closeConnection(con, stmt);
}
return list;
}
}[/code]
[color=blue]o que acontece, quando carrego os campos com dados na interface, e clico no botão inserir
ele me dá este erro:[/color]
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error calling action method of component with id _idJsp0:_idJsp16
javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
root cause
javax.faces.FacesException: Error calling action method of component with id _idJsp0:_idJsp16
org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
javax.faces.component.UICommand.broadcast(UICommand.java:109)
javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5 logs.
Apache Tomcat/5.5
estou usando o Jboss como servidor, sei que foi meio extensa a mensagem,
mas se alguém souber como eu posso resolver este problema eu agradeço muito,
desde já agradeço, boa sorte a todos.