我有一個輸入字段(類型:'date') - 我可以使用Thymeleaf將其映射到我的Object中的LocalDate字段?將HTML輸入日期映射到Java對象的LocalDate
對象
public class Project {
@Id
private int id;
private LocalDate startDate;
private LocalDate endDate;
}
HTML輸入
<form action="#"
th:action="@{|/admin/projects/add/save|}"
th:object="${newProjects}"
method="POST"
class="form-horizontal">
<input type="date" class="form-control" id="startDate"
placeholder="Project start"
th:field="*{startDate}"/>
<input type="date" class="form-control" id="endDate"
placeholder="Project start"
th:field="*{endDate}"/>
</form>
我怎麼能正確映射輸入字段到LOCALDATE的startDate或結束日期?
控制器
//GetMapping for Projects is also there, but I didn't paste it to keep clarity
@PostMapping("/add/save")
public String saveProject(@Valid @ModelAttribute("project") Project project,
BindingResult bindingResult,
Model model,
RedirectAttributes redirectAttributes) {
// bindingResult has error, because Thymeleaf can't map from the input-field to startDate
if (!bindingResult.hasErrors()) {
project.save(project);
return "redirect:/admin/projects/list";
} else {
return "admin/projects/add";
}
}
異常
無法類型的屬性值 'java.lang.String中' 所需類型 'java.time.LocalDate' 的屬性轉換'開始日期';嵌套0例外是 org.springframework.core.convert.ConversionFailedException:從類型無法 轉換[java.lang.String中]鍵入 [@ javax.persistence.Column java.time.LocalDate]爲值 「2017- 09-08' ;嵌套異常是java.lang.IllegalArgumentException異常: 解析嘗試失敗值[2017年9月8日]
第一個能用的。謝謝! – ersu
太棒了!只要確保我已標記爲可接受的答案,以幫助其他人直接進入解決方案。 –