Aplicação JSF utilizando o padrão MVC

2 respostas
M

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]

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

[color=red]aqui vai o código da minha classe UsuarioFormBean:[/color]

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();
	}

}

[color=orange]está é minha classe de implementação UsuarioFacadeImpl:[/color]

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();
	}

}

[color=red]está é a interface da classe usuariofacade:[/color]

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();

}

[color=orange]está é minha classe de implementação UsuarioDAOImpl:[/color]

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;
	}

}

[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.

2 Respostas

S

bom vamos começar, como está seu faces-config ??

e a tua view, posta eles ai pra gente poder te ajudar… :lol:

M

Olá, agradeço a atenção, aqui vai meu faces-config:

<!DOCTYPE faces-config PUBLIC
    "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
    "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>
	<managed-bean>
		<managed-bean-name>usuarioFormBean</managed-bean-name>
		<managed-bean-class>
			br.com.patterns.web.usuario.UsuarioFormBean
		</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>
	<navigation-rule>
		<display-name>index</display-name>
		<from-view-id>/index.jsp</from-view-id>
		<navigation-case>
			<from-outcome>sucesso</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>

</faces-config>

e aqui vai minha view: index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@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" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<f:view>
	<h:form>
		<h:panelGrid columns="2">
			<h:outputLabel for="id" value="Id:"/>		
			<h:inputText id="id" value="#{usuarioFormBean.usuarioVO.id}" />

			<h:outputLabel for="name" value="Nome:" />
			<h:inputText id="name" value="#{usuarioFormBean.usuarioVO.name}" />

			<h:outputLabel for="endereco" value="Endereco:" />
			<h:inputText id="endereco"
				value="#{usuarioFormBean.usuarioVO.endereco}" />

			<h:outputLabel for="bairro" value="Bairro:" />
			<h:inputText id="bairro" value="#{usuarioFormBean.usuarioVO.bairro}" />

			<h:outputLabel for="cep" value="Cep:" />
			<h:inputText id="cep" value="#{usuarioFormBean.usuarioVO.cep}" />

			<h:outputLabel for="cidade" value="Cidade:" />
			<h:inputText id="cidade" value="#{usuarioFormBean.usuarioVO.cidade}" />

			<h:outputLabel for="cpf" value="CPF/CNPJ:" />
			<h:inputText id="cpf" value="#{usuarioFormBean.usuarioVO.cpf}" />

			<h:outputLabel for="rg" value="RG:" />
			<h:inputText id="rg" value="#{usuarioFormBean.usuarioVO.rg}" />

			<h:outputLabel for="inscricaocliente" value="INSCR/ESTADUAL:" />
			<h:inputText id="inscricaocliente"
				value="#{usuarioFormBean.usuarioVO.inscricaoCliente}" />

			<h:outputLabel for="fisJur" value="Física/Jurídica:" />
			<h:inputText id="fisJur" value="#{usuarioFormBean.usuarioVO.fisJur}" />

			<h:outputLabel for="dataCad" value="Data:" />
			<h:inputText id="dataCad"
				value="#{usuarioFormBean.usuarioVO.dataCad}" />

			<h:outputLabel for="contato" value="Contato:" />
			<h:inputText id="contato"
				value="#{usuarioFormBean.usuarioVO.contanto}" />

			<h:outputLabel for="telefone" value="Telefone:" />
			<h:inputText id="telefone"
				value="#{usuarioFormBean.usuarioVO.telefone}" />

			<h:outputLabel for="observ" value="Observação:" />
			<h:inputTextarea id="observ"
				value="#{usuarioFormBean.usuarioVO.observ}" />
		</h:panelGrid>
		<h:commandButton value="Inserir" action="#{usuarioFormBean.inserir}" />

		<f:verbatim>
			<br>
		</f:verbatim>
		<f:verbatim>
			<br>
		</f:verbatim>	

	</h:form>
</f:view>
</body>
</html>

o que acontece, quando eu preencho minhas textfiels, e cliclo no botão inserir,
dá aquele erro:

Criado 16 de setembro de 2007
Ultima resposta 17 de set. de 2007
Respostas 2
Participantes 2