Mais uma vez estou buscando a ajuda de vocês para problemas com meus estudos em java, estou seguindo a apostila da Caelum fj21 - web e no exercício “11.16 Exercício: Removendo e Alterando tarefas”. estou tendo problemas para alterar as tarefas cadastradas. Sempre que tento aletrar uma tarefa recebo a seguinte mensagem de erro:
HTTP Status 500 - Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
type Exception report
message Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object ‘tarefa’ on field ‘dataFinalizacao’: rejected value [01/011111]; codes [typeMismatch.tarefa.dataFinalizacao,typeMismatch.dataFinalizacao,typeMismatch.java.util.Calendar,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [tarefa.dataFinalizacao,dataFinalizacao]; arguments []; default message [dataFinalizacao]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘java.util.Calendar’ for property ‘dataFinalizacao’; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.format.annotation.DateTimeFormat java.util.Calendar for value ‘01/011111’; nested exception is java.lang.IllegalStateException: JodaTime library not available - @DateTimeFormat not supported]
Field error in object ‘tarefa’ on field ‘id’: rejected value [21"/]; codes [typeMismatch.tarefa.id,typeMismatch.id,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [tarefa.id,id]; arguments []; default message [id]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘int’ for property ‘id’; nested exception is java.lang.NumberFormatException: For input string: “21”/"]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object ‘tarefa’ on field ‘dataFinalizacao’: rejected value [01/011111]; codes [typeMismatch.tarefa.dataFinalizacao,typeMismatch.dataFinalizacao,typeMismatch.java.util.Calendar,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [tarefa.dataFinalizacao,dataFinalizacao]; arguments []; default message [dataFinalizacao]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘java.util.Calendar’ for property ‘dataFinalizacao’; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.format.annotation.DateTimeFormat java.util.Calendar for value ‘01/011111’; nested exception is java.lang.IllegalStateException: JodaTime library not available - @DateTimeFormat not supported]
Field error in object ‘tarefa’ on field ‘id’: rejected value [21"/]; codes [typeMismatch.tarefa.id,typeMismatch.id,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [tarefa.id,id]; arguments []; default message [id]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘int’ for property ‘id’; nested exception is java.lang.NumberFormatException: For input string: “21”/"]
org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:111)
org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:75)
org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:156)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:117)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.75 logs.
Apache Tomcat/7.0.75
minhas classes estão dessa forma:
Classe Controladora.
public class TarefaController {
... Outros métodos
Adiciona, lista, remove...
@RequestMapping("mostraTarefa")
public String mostra(int id, Model model){
TarefaDao tarefDao = new TarefaDao();
model.addAttribute("tarefa", tarefDao.buscaTarefa(id));
return "tarefas/mostra";
}
@RequestMapping("alteraTarefa")
public String altera(Tarefa tarefa){
TarefaDao tarefDao = new TarefaDao();
tarefDao.alteratarefa(tarefa);
return "redirect:listaTarefas";
}
}
Classe Tarefa.
public class Tarefa {
private int id;
@NotNull @Size(min=5)
private String descricao;
private boolean finalizado;
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataFinalizacao;
Getters and Setters...
Classe altera tarefas.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h3>Altera Tarefas - ${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?:<br />
<input type="checkbox" name="finalizado" value="true" ${tarefa.finalizado? 'checked' : ''}> <br />
Data Finalização:<br />
<input type="text" name="dataFinalizacao" value="<fmt:formatDate value="${tarefa.dataFinalizacao.time}" pattern="dd/MM/yyyy"/>"/>
<input type="submit" value="Alterar">
</form>
</body>
</html>
Não sei o que está ocorrendo de errado, Alguém por favor pode me dar uma dica de onde posso está errando?
Antecipadamente agradeço.