入力フィールド(タイプ: 'date')があります。誰がThymeleafを使用してオブジェクトの '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またはendDateにに正しく入力フィールドをマッピングするだろうか?
コントローラ
//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.time.LocalDate' に 'はjava.lang.String型' を変換するのに失敗しました。 '開始日';ネストされた 例外は org.springframework.core.convert.ConversionFailedExceptionです:[java.lang.Stringで] [@ javax.persistence.Column java.time.LocalDate]値 のための「タイプするタイプから の変換に失敗しました2017- 09-08 ';あなただけの単純なタイプで定義することができますモデルオブジェクトをバインドすることができ 解析の試みが値に失敗しました[2017年9月8日]
最初のものが働いています。ありがとうございました! – ersu
素晴らしい!誰かが解決策に直接向かうのを助けるための受け入れ可能な回答としてマークしたことを確認してください。 –