Caros, tenho este método que quando executo salva todos os campos, exceto o de data.
public void altera(Tarefa tarefa) throws SQLException {
Connection con = new ConnectionFactory().getConnection();
String sql = "update tarefas set descricao = ?, finalizado = ?, dataFinalizacao = ? where id = ?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, tarefa.getDescricao());
stmt.setBoolean(2, tarefa.isFinalizado());
stmt.setDate(3, tarefa.getDataFinalizacao() != null
? new Date(tarefa.getDataFinalizacao().getTimeInMillis()) : null);
stmt.setLong(4, tarefa.getId());
stmt.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
Para salvar uso a classe controle com este metodo:
@RequestMapping("alteraTarefa")
public String altera(Tarefa tarefa, BindingResult result) throws SQLException {
JdbcTarefaDao dao = new JdbcTarefaDao(); // usando a ideia de inject
dao.altera(tarefa);
return "redirect:listaTarefas";
}
e no JSP tenho este formulário:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="caelum"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<link href="css/jquery.css" rel="stylesheet">
<script src="js/jquery.js"></script>
<script src="js/jquery-ui.js"></script>
<link href="css/ui-lightness/jquery-ui-1.10.3.custom.css" rel="stylesheet">
<script src="js/jquery-1.9.1.js"></script>
<script src="js/jquery-ui-1.10.3.custom.js"></script>
<link rel="stylesheet" type="text/css" href="<c:url value="/resources/css/estilo.css" />" />
<link type="text/css" href="resources/css/tarefas.css" rel="stylesheet" />
</head>
<body>
<c:import url="/WEB-INF/views/cabecalho.jsp" />
<h3>Alterar tarefa - ${tarefa.id}</h3>
<form action="alteraTarefa" method="post">
<input type="hidden" name="id" value="${tarefa.id}" /> Descrição:<br />
<textarea name="descricao" cols="100" rows="5" >${tarefa.descricao}</textarea><br />
Finalizado? <input type="checkbox" name="finalizado" value="true" ${tarefa.finalizado? 'checked' : '' } /> <br />
Data de finalização:
<fmt:formatDate value='${tarefa.dataFinalizacao.time}' pattern='dd/MM/yyyy' var="dataFormatada" />
<caelum:campoData id="dataFinalizacao" val="${dataFormatada}"/>
<br />
<input type="text" name="dataFinalizacao" value="<fmt:formatDate value="${tarefa.dataFinalizacao.time}" pattern="dd/MM/yyyy" />"/>
<p>
<input type="submit" value="Alterar" />
</p>
</form>
<span class="link"><a href="listaTarefas">Volta para Lista de Serviços</a><br/>
<a href="logout">Sair do sistema</a></span>
</body>
<c:import url="/WEB-INF/views/rodape.jsp" />
</html>
No desispero já coloque "caelum:campoData" que abre certinho e o "input type="text" name="dataFinalizacao"" e nada. O fato que que salva na tabela do MYsql todos dos dados menos a data. O que devo fazer?
Relvido o problme
— Tryriodejaneiro 07 de fev de 2017