Problemas com botão - Hibernate

2 respostas
brothernew

Estou com um problema no botão "Cadastrar".

Na página "cadastro_clientes.jsp" funciona perfeitamente, porém na página "atualizar_clientes.jsp" ao clicar no botão "Atualizar" me apresenta logo em seguida a tela de cadastro de cliente acusando a atualização como um novo cadastro e na página "cadastro_cpucl.jsp" ao clicar no botão "Cadastrar" me apresenta logo em seguida a mesma tela de cadastro de cliente.

Estou trabalhando com os seguintes arquivos:

cadastro_cpucl.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>Cadastro de Máquinas</title>
<link rel="stylesheet" type="text/css" href="principal.css">
</head>
<body>
<div id="container">
	<div id="top">
		<h1>Cadastro de Máquinas</h1>
		<h3>${mensagem}</h3>
	</div>
	<div id="leftSide">
		<fieldset>
			<legend>Máquina</legend>
			<form action="RinconController" method="post" class="form">
			<input type="hidden" id="cmd" value="cadastrarCpuCl"/>
			<label for="nome">Placa Mãe*</label>
			<div class="div_texbox">
				<input type="text" name="pl_mae" id="pl_mae" value="${cpu.pl_mae}"/>
				S/N:<input type="text" name="sn_mae" id="sn_mae" value="${cpu.sn_mae}"/>
			</div>
			<label for="nome">Processador*</label>
			<div class="div_texbox">
				<input type="text" name="processador" id="processador" value="${cpu.processador}"/>
			</div>
			<label for="nome">Placa de Vídeo*</label>
			<div class="div_texbox">
				<input type="text" name="pl_video" id="pl_video" value="${cpu.pl_video}"/>
				S/N:<input type="text" name="sn_video" id="sn_video" value="${cpu.sn_video}"/>
			</div>
			<label for="nome">Placa de Rede*</label>
			<div class="div_texbox">
				<input type="text" name="pl_rede" id="pl_rede" value="${cpu.pl_rede}"/>
				S/N:<input type="text" name="sn_rede" id="sn_rede" value="${cpu.sn_rede}"/>
			</div>
			<label for="nome">Placa de Som*</label>
			<div class="div_texbox">
				<input type="text" name="pl_som" id="pl_som" value="${cpu.pl_som}"/>
				S/N:<input type="text" name="sn_som" id="sn_som" value="${cpu.sn_som}"/>
			</div>
			<label for="nome">HD*</label>
			<div class="div_texbox">
				<input type="text" name="hd" id="hd" value="${cpu.hd}"/>
				S/N:<input type="text" name="sn_hd" id="sn_hd" value="${cpu.sn_hd}"/>
			</div>
			<label for="nome">Memória*</label>
			<div class="div_texbox">
				<input type="text" name="memoria" id="memoria" value="${cpu.memoria}"/>
				S/N:<input type="text" name="sn_memoria" id="sn_memoria" value="${cpu.sn_memoria}"/>
			</div>
			<div class="button_div">
				<input name="cadastrar" type="submit" value="Cadastrar" class="buttons"/>
			</div>
			<div class="button_div">
				<li><a href="index.jsp" class="buttons">Voltar</a></li>			
			</div>
			</form>
		</fieldset>
	</div>
</div>
</body>
</html>

CadastrarCpuCl.java

package br.com.rincon.model.command;

import java.lang.reflect.InvocationTargetException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import br.com.rincon.model.bean.CpuCl;
import br.com.rincon.model.dao.HibernateDAO;
import br.com.rincon.model.dao.InterfaceDAO;

public class CadastrarCpuCl implements InterfaceCommand {

	@Override
	public String execute(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
		
		CpuCl cpuCl = new CpuCl();
		try {
			BeanUtils.populate(cpuCl,request.getParameterMap());
			if(cpuCl.isValido()){
				
				InterfaceDAO<CpuCl> cpuClDAO = new HibernateDAO<CpuCl>(CpuCl.class);
				cpuClDAO.salvar(cpuCl);
				request.setAttribute("mensagem","Máquina gravada com sucesso: "+cpuCl.getN_serie());
			}else
				request.setAttribute("mensagem","Preencha os campos obrigatórios!");
			
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			request.setAttribute("mensagem", "problemas com preenchimento do Bean: "+e.getMessage());
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			request.setAttribute("mensagem", "problemas com preenchimento do Bean: "+e.getMessage());
			e.printStackTrace();
		} catch(Exception e){
			request.setAttribute("mensagem", "problemas com a gravação: "+e.getMessage());
			e.printStackTrace();
		}
		return "cadastro_cpucl.jsp";
	}

}

RinconHelper.java

package br.com.rincon.model.helper;

import javax.servlet.http.HttpServletRequest;

import br.com.rincon.model.command.AtualizarClientes;
import br.com.rincon.model.command.CadastrarClientes;
import br.com.rincon.model.command.CadastrarCpuCl;
import br.com.rincon.model.command.ConsultarClientes;
import br.com.rincon.model.command.ExcluirClientes;
import br.com.rincon.model.command.InterfaceCommand;

public class RinconHelper {
	
	private HttpServletRequest request;
	
	public RinconHelper(HttpServletRequest request){
		
		super();
		this.request = request;
	}
	
	public InterfaceCommand getCommand(){
		
		String cmd = request.getParameter("cmd");
		if(cmd==null || cmd.equals("cadastrarClientes"))
			return new CadastrarClientes();
		if(cmd.equals("consultarClientes"))
			return new ConsultarClientes();
		if(cmd.equals("excluirClientes"))
			return new ExcluirClientes();
		if(cmd.equals("atualizarClientes"))
			return new AtualizarClientes();
		if(cmd==null || cmd.equals("cadastrarCpuCl"))
			return new CadastrarCpuCl();
		return null;
	}

}

cadastro_clientes.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>Cadastro de Clientes</title>
<link rel="stylesheet" type="text/css" href="principal.css">
</head>
<body>
<div id="container">
	<div id="top">
		<h1>Cadastro de Clientes</h1>
		<h3>${mensagem}</h3>
	</div>
	<div id="leftSide">
		<fieldset>
			<legend>Cliente</legend>
			<form action="RinconController" method="post" class="form">
			<input type="hidden" id="cmd" value="cadastrarClientes"/>
			<label for="nome">Nome*</label>
			<div class="div_texbox">
				<input type="text" name="nome" id="nome" value="${clientes.nome}"/>
			</div>
			<label for="nome">Endereço*</label>
			<div class="div_texbox">
				<input type="text" name="endereco" id="endereco" value="${clientes.endereco}"/>
			</div>
			<label for="nome">Telefone*</label>
			<div class="div_texbox">
				<input type="text" name="telefone" id="telefone" value="${clientes.telefone}"/>
			</div>
			<label for="nome">Estado*</label>
			<div class="div_texbox">
				<input type="text" name="uf" id="uf" value="${clientes.uf}"/>
			</div>
			<label for="nome">E-mail*</label>
			<div class="div_texbox">
				<input type="text" name="email" id="email" value="${clientes.email}"/>
			</div>
			<label for="nome">Nome Empresa*</label>
			<div class="div_texbox">
				<input type="text" name="nome_empresa" id="nome_empresa" value="${clientes.nome_empresa}"/>
			</div>
			<div class="button_div">
				<input name="cadastrar" type="submit" value="Cadastrar" class="buttons"/>
			</div>
			<div class="button_div">
				<li><a href="index.jsp" class="buttons">Voltar</a></li>			
			</div>
			</form>
		</fieldset>
	</div>
</div>
</body>
</html>

atualizar_clientes.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>Atualização de Clientes</title>
<link rel="stylesheet" type="text/css" href="principal.css">
</head>
<body>
<div id="container">
	<div id="top">
		<h1>Atualização de Clientes</h1>
		<h3>${mensagem}</h3>
	</div>
	<div id="leftSide">
		<fieldset>
			<legend>Cliente</legend>
			<form action="RinconController" method="post" class="form">
			<input type="hidden" id="cmd" value="atualizarClientes"/>
			<input type="hidden" id="id_cliente" name="id_cliente" value="${param.codigo}"/>
			<label for="nome">Nome*</label>
			<div class="div_texbox">
				<input type="text" name="nome" id="nome" value="${clientes.nome}"/>
			</div>
			<label for="nome">Endereço*</label>
			<div class="div_texbox">
				<input type="text" name="endereco" id="endereco" value="${clientes.endereco}"/>
			</div>
			<label for="nome">Telefone*</label>
			<div class="div_texbox">
				<input type="text" name="telefone" id="telefone" value="${clientes.telefone}"/>
			</div>
			<label for="nome">Estado*</label>
			<div class="div_texbox">
				<input type="text" name="uf" id="uf" value="${clientes.uf}"/>
			</div>
			<label for="nome">E-mail*</label>
			<div class="div_texbox">
				<input type="text" name="email" id="email" value="${clientes.email}"/>
			</div>
			<label for="nome">Nome Empresa*</label>
			<div class="div_texbox">
				<input type="text" name="nome_empresa" id="nome_empresa" value="${clientes.nome_empresa}"/>
			</div>
			<div class="button_div">
				<input name="atualizar" type="submit" value="Atualizar" class="buttons"/>
			</div>
			<div class="button_div">
				<li><a href="RinconController?cmd=consultarClientes" class="buttons">Voltar</a>			
			</div>
			</form>
		</fieldset>
	</div>
</div>
</body>
</html>

AtualizarClientes.java

package br.com.rincon.model.command;

import java.lang.reflect.InvocationTargetException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import br.com.rincon.model.bean.Clientes;
import br.com.rincon.model.dao.HibernateDAO;
import br.com.rincon.model.dao.InterfaceDAO;

public class AtualizarClientes implements InterfaceCommand {

	@Override
	public String execute(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
		Clientes clientes = new Clientes();
		try {
			BeanUtils.populate(clientes, request.getParameterMap());
			if(clientes.isValido()){
				InterfaceDAO<Clientes> clientesDAO = new HibernateDAO<Clientes>(Clientes.class);
				clientesDAO.atualizar(clientes);
				request.setAttribute("mensagem", "Cliente atualizado com sucesso!");
			}else if(request.getMethod().equalsIgnoreCase("post")){
				request.setAttribute("clientes", clientes);
				request.setAttribute("mensagem", "Preencha os campos obrigatórios!");
				return "atualizar_clientes.jsp";
			}else{
				InterfaceDAO<Clientes> clientesDAO = new HibernateDAO<Clientes>(Clientes.class);
				Integer codigo = Integer.valueOf(request.getParameter("codigo"));
				request.setAttribute("clientes", clientesDAO.getBean(codigo));
				return "atualizar_clientes.jsp";
			}
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			request.setAttribute("mensagem", "Problemas com a atualização! "+e.getMessage());
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			request.setAttribute("mensagem", "Problemas com a atualização! "+e.getMessage());
			e.printStackTrace();
		}		
		return "RinconController?cmd=consultarClientes";
	}
}

InterfaceDAO.java

package br.com.rincon.model.dao;

import java.io.Serializable;
import java.util.List;

public interface InterfaceDAO<T> {
	
	void salvar(T bean);
	void atualizar(T bean);
	void excluir(T bean);
	T getBean(Serializable codigo);
	List<T> getBeans();

}

Desde já agradeço quem puder me ajudar!!!

Att.
Thiago

2 Respostas

Poneis123

Os 3 botões estão enviando para a mesma tela?
Vai para a tela de cadastro de cliente os botões:
cadastro_clientes.jsp>Cadastrar
atualizar_clientes.jsp>Atualizar
cadastro_cpucl.jsp>Cadastrar

certo?

Esses 3 botões estão dando submit no mesmo form (<form action=“RinconController” method=“post” class=“form”>) então é preciso que o RinconController valide de onde está sendo a requisição e trate de maneiras diferentes.

Esse form cai no RinconHelper.java? se cai, possivelmente o request.getParameter(“cmd”) está sempre retornando null e consequentemente entrando sempre no primeiro if (o de cadastrar cliente)

brothernew

Vlw amigão!!!

Eu entendi, como sou novato(jr) vou tentar implementar, não tendo sucesso eu volto!!!

Para testar o que vc informou, eu alterei a referência “Clientes” p/ “Operadores” no RinconHelper e funcionou o cadastro, consulta e excluir.

Agora vou quebrar a cabeça um pouco, vlw!

Thiago.

Criado 10 de março de 2010
Ultima resposta 10 de mar. de 2010
Respostas 2
Participantes 2