Envia os dados para o banco sozinho!

Eai, galera!

Estou com um problema persistente aqui, estou a horas tentando resolver! Gostaria da ajuda de vcs

Tenho uma página e quando clico no link para cadastrar um cliente abre um formulário para o preenchimento dos dados, porém não sei o que fiz que agora quando clica no link ele já entra e grava no banco tudo null. É como se ele desse submit automático.
Só que o meu campo codigo nao aceita null, entao toda vez q entro neste formulário de cadastro ele tenta enviar os dados, mas da erro né… fala que a Column ‘codigo’ cannot be null

O código onde faz a gravação é este:

@Override
	public String execute(HttpServletRequest request,
			HttpServletResponse response) {
		
		try {
			Changes changes = new Changes();
			changes.setCodigo(request.getParameter("codigo"));
			changes.setCliente(request.getParameter("cliente"));
			changes.setData(null);
			changes.setDescricao(request.getParameter("descricao"));
			changes.setStatus(request.getParameter("status"));
			changes.setObservacao(request.getParameter("observacao"));	
				
			changesDAO.salvar(changes);
			request.setAttribute("mensagem", "Change "+changes.getCodigo()+" gravada com sucesso!");
		} catch (SQLException e) {
			request.setAttribute("mensagem", "Ocorreu problema com a gravação! " +e.getMessage());
			e.printStackTrace();
		}catch (NumberFormatException e) {
			request.setAttribute("mensagem", "Valor inválido: "+e.getMessage());			
			e.printStackTrace();
		}
		request.setAttribute("titulo", "cadastro - changes");
		return "cadastro_changes.jsp";
	}

Bom, eu fiz um if que ajuda, mas nao resolve o problema… ele nao entra cadastrando, mas se nao preencher nada no codigo ele aceita, sendo que eh not null!

Mas quero muito saber porque ele cadastra sozinho.

Ainda gostaria de ajuda pra entender isso

valeu

if (changes.getCodigo() == null){
				request.setAttribute("mensagem", "");
			} else {
				changesDAO.salvar(changes);
				request.setAttribute("mensagem", "Change "+changes.getCodigo()+" gravada com sucesso!");
			}

Cara duas coisas, como esta o seu banco? Como você criou a sua tabela.

E segundo, você colocou auto_increment no seu codigo?

como vc esta fazendo seu visual?

vc esta desenvolvendo em MVC?

Post todas as camadas que estão se comunicando

if (changes.getCodigo() == null){  
                request.setAttribute("mensagem", "");  
            } else {  
                changesDAO.salvar(changes);  
                request.setAttribute("mensagem", "Change "+changes.getCodigo()+" gravada com sucesso!");  
            }  

assim como voce fez a validacao para checar se codigo era null, faz tambem para os outros campos, porque no caso acima, voce ta dizendo que se codigo nao for null, ele grava, mas se codigo nao for null e o resto todo for null, ele grava do mesmo jeito. O certo, acredito eu, é voce fazer validacao para os campos not null(os obrigatorios), lembrando sempre de usar o .trim() da classe String e depois validar e validar tambem nao somente null, mas .equals(""). Como abaixo:

if (changes.getCodigo() == null || changes.getCodigo.trim().equals("")){    // Isso é so um exemplo se for String, se for numerico valida com == 0  
                request.setAttribute("mensagem", "");  
} else {  
                changesDAO.salvar(changes);  
                request.setAttribute("mensagem", "Change "+changes.getCodigo()+" gravada com sucesso!");  
}

Abraços.

A tabela de cadastro tem (id, codigo, cliente, data, descricao, status, observacao) - id é int auto-increment e data é do tipo date

rof20004, valeu por completar o if

A classe de cadastro é primeira que postei no tópico, as outras estão abaixo.

pagina jsp de cadastro

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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 Changes</title>
</head>
<body>
<jsp:include page="cabecalho.jsp"></jsp:include>
<div align="center">
<form action="ChangesController" style="border:dashed; border:thin; border-color:#3580AC color: #0080FF; font-size: 10px; font-family: Tahoma, Verdana, Arial, Sans-Serif">
<h3>${mensagem}</h3>
			<input type="hidden" name="cmd" value="cadastrarChanges"></input>
			<table
			style="color: #004080; font-size: 10px; font-family: Tahoma, Verdana, Arial, Sans-Serif; border-left-color: #3580AC; border-top-color: #3580AC; border-right-color: #3580AC; border-bottom-color: #3580AC"
			border="1" bordercolor="#3580AC" cellpadding="5">
			<thead>
				<tr
					style="color: #004080; font-size: 12px; font-family: Tahoma, Verdana, Arial, Sans-Serif; font-weight: bold">
					<th>Atributo</th>
					<th>Valor</th>
				</tr>
			</thead>
			<tr>
				<td>Código:</td>
				<td><input id="codigo" name="codigo" style="height: 20px" value="${changes.codigo}"></input></td>
			</tr>
			<tr>
				<td>Cliente:</td>
				<td><input id="cliente" name="cliente" style="height: 20px" value="${changes.cliente}"></input></td>
			</tr>
			<tr>
				<td>Data:</td>
				<td><input id="data" name="data" style="height: 20px" maxlength="10" value="${changes.data}"></input></td>
			</tr>
			<tr>
				<td>Descrição:</td>
				<td><input id="descricao" name="descricao" style="height: 20px" value="${changes.descricao}"></input></td>
			</tr>
			<tr>
				<td>Status:</td>
				<td><input id="status" name="status" style="height: 20px" value="${changes.status}"></input></td>
			</tr>
			<tr>
				<td>Observação:</td>
				<td><input id="observacao" name="observacao" style="height: 20px" value="${changes.observacao}"></input></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="Cadastrar" style="height: 25px; "></input></td>
			</tr>
		</table>
	</form>
</div>
<jsp:include page="rodape.jsp"></jsp:include>
</body>
</html>

este input da jsp (value=“cadastrarChanges”), leva para:

public class ChangesHelper {
    
    private HashMap<String, InterfaceCommand> mapaComandos;    
    private HttpServletRequest request;    
	private InterfacePool pool;
    
	public ChangesHelper(){
    	
		try {
			this.pool = new Pool();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}

        mapaComandos = new HashMap<String, InterfaceCommand>();
        mapaComandos.put("cadastrarChanges", new CadastrarChanges(new ChangesDAO(pool)));
        mapaComandos.put("consultarChanges", new ConsultarChanges(new ChangesDAO(pool)));
        
        mapaComandos.put("iniciarChanges", new IniciarChanges());
    }
    
    public void setRequest(HttpServletRequest request) {
		this.request = request;
	}
      
}

e acho que por fim, o IniciarChanges

public class IniciarChanges implements InterfaceCommand {

	@Override
	public String execute(HttpServletRequest request,
			HttpServletResponse response) {
		
		return "cadastro_principal.jsp";
	}

}

e tem a classe DAO também, mas acho que ela não está implicando neste problema. Mas se precisar eu posto.