結果のWebページのような空の日付でフォームを送信すると、検証エラーが表示されるという問題があります。
Failed to convert property value of type java.lang.String to required type
java.util.Date for property dateFin; nested exception is
java.lang.IllegalArgumentException: Could not parse date: Unparseable date: ""
私のコントローラーは次のようになります。
@Controller
@SessionAttributes
@Lazy
public class MyController extends AbstractMVPAction {
@RequestMapping(value = "/secured/cp/saveProgram")
public String enregistrerProgramme(@ModelAttribute Program program,
BindingResult bindingResult, ModelMap model){
if(bindingResult.hasErrors()){
model.put("program", program);
return "/secured/cp/showProgram"
}else{
// ... saves the programme
model.put("program", null);
return "/secured/cp/backToOtherPage"
}
}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new CustomDateEditor(
new SimpleDateFormat("dd/MM/yyyy"), false));
}
}
メソッドをデバッグすると、オブジェクトが正常であることがわかります。行った変更は適切に報告され、日付は null ですが、bindingResult.hasErrors() は true を返し、私によればそうすべきではありません。
Program オブジェクトと @Valid アノテーションにいくつかの検証アノテーションがありましたが、それらをすべて削除してもまだ問題があります。
私は同様の問題をたくさん読みましたが、解決策は@InitBinder/CustomDateEditorです。そこにあり、機能していると思います。日付は希望どおりに表示され(追加する前はそうではありませんでした)、空でない場合は送信できます。
前もって感謝します、私は夢中になり始めています...