Tôi nhận được lỗi này khi tôi cố gắng nhập ngày trong biểu mẫu. Không thể chuyển đổi giá trị thuộc tính của loại java.lang.String thành loại yêu cầu java.util.Date
TaskController
@RequestMapping(value = "/docreatetask", method = RequestMethod.POST)
public String doCreateTask(Model model, @Valid Task task,
BindingResult result, Principal principal,
@RequestParam(value = "delete", required = false) String delete) {
System.out.println(">TaskController doCreateTask " + task);
if (result.hasErrors()) {
System.out.println("/docreatetask in here");
model.addAttribute("task", task);
System.out.println("+++++"+task.getDeadline());// deadline is null
return "createtask";
}
...
Create.jsp
...
<form:form method="POST"
action="${pageContext.request.contextPath}/docreatetask"
commandName="task">
<table class="formtable">
<tr>
<td class="label">Task</td>
<td><form:input cssClass="control" path="taskname"
name="taskname" type="text" /><br />
<form:errors path="taskname" cssClass="error" /></td>
</tr>
<tr>
<td class="label">Description</td>
<td><form:textarea cssClass="control" path="description"
name="description"></form:textarea><br />
<form:errors path="description" cssClass="error" /></td>
</tr>
<tr>
<td class="label">Deadline (dd/mm/yyyy)</td>
<td><form:input cssClass="control" path="deadline"
name="deadline" type="date" /><br />
<form:errors path="deadline" cssClass="error"></form:errors></td>
</tr>
...
Trong bộ điều khiển tôi đã viết như sau với các lỗi tương tự (và các định dạng khác nhau như "/ MM/dd yyyy ")
@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.setLenient(false);
webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
Tôi cũng đã cố gắng để thêm chú thích trong lớp (cũng với các định dạng khác nhau) nhưng cùng một lỗi
...
@Column(name = "deadline")
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date deadline;
...
Đăng mã JSP của bạn. –
Tôi nghĩ, tôi đã phát hiện ra lỗi. Tôi đã thay đổi SimpleDateFormat mới ("dd/MM/yyyy") cho SimpleDateFormat mới ("yyyy-MM-dd") – Joe
Mẫu phải là '" yyyy-MM-dd "'. Cẩn thận với MM (tháng) và mm (phút). –