Tanto o código que fiz, quanto do instrutor a data de pagamento aparece com um dia a menos (alterei para 05/05/2019 e aparece 04/05/2019). Segue os códigos:
JSP
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<meta charset="UTF-8">
<title>Mostrar Contas</title>
</head>
<body>
<h3>Alterar Conta</h3>
<form action="alteraConta" method="post">
<div>Descrição: <br />
<textarea name="descricao" rows="5" cols="100">${conta.descricao}</textarea>
</div>
<div>
Valor: <br /> <input type="text" name="valor" value="${conta.valor}" />
</div>
<div>
Tipo: <br />
<select name="tipo">
<option value="ENTRADA" ${conta.tipo=='ENTRADA' ? 'selected':''}>Entrada</option>
<option value="SAIDA" ${conta.tipo=='SAIDA' ? 'selected':''}>Saída</option>
</select>
</div>
<div>
Pago <br />
<input type="checkbox" name="paga" ${conta.paga?'checked':''} />
</div>
<div>
Data de Pagamento: <br />
<input type="text" name="dataPagamento"
value="<fmt:formatDate value="${conta.dataPagamento.time}"
pattern="dd/MM/yyyy" />" />
</div>
<div>
<input type="hidden" name="id" value="${conta.id}" />
<input type="submit" value="Alterar" />
</div>
</form>
</body>
</html>
Controllers
@RequestMapping("/mostraConta")
public String mostrar(Long id, Model model) {
ContaDAO dao = new ContaDAO();
model.addAttribute("conta", dao.buscaPorId(id));
return "conta/mostra";
}
@RequestMapping("/alteraConta")
public String alterar(Conta conta) {
ContaDAO dao = new ContaDAO();
dao.altera(conta);
return "redirect:listaContas";
}
Conta
public class Conta {
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataPagamento;
public Calendar getDataPagamento() {
return dataPagamento;
}
public void setDataPagamento(Calendar dataPagamento) {
this.dataPagamento = dataPagamento;
}
}