IllegalStateExceptionのの出力例
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Jan 27 09:09:41 JST 2022
There was an unexpected error (type=Internal Server Error, status=500).
An error happened during template parsing (template: "class path resource [templates/children/register.html]")
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/children/register.html]")
...
Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "children/register" - line 16, col 56)
...
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "children/register" - line 16, col 56)
...
Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'child' available as request attribute
IllegalStateExceptionの原因と解決策
ログの一番下に、
Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'child' available as request attribute
このような出力があります。
HTMLテンプレート内の"child"というオブジェクトが利用可能になってない。
という意味です。
"child"をmodel.addAttributeしているか確認してください。
if (bindingResult.hasErrors()) {
return "children/register";
}
if (bindingResult.hasErrors()) {
model.addAttribute("child", childRegisterForm);
return "children/register";
}
上記は一例ですが、バリデーションチェック後にもう一度入力画面を表示するときに、model.addAttributeするのを忘れていたため、このエラーが発生しています。