##環境
macOS
STS
spring-boot 2.4.3
Thymeleaf
##Error during exception of processor...とは?
エラーコード
Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputFileFieldTagProcessor'
##よくある原因
よくある原因としては
・Thymeleafオブジェクトの値を正しく参照できていない
・Thymeleafオブジェクトがそもそも存在しない
が挙げられる。
例えばth:objectで参照したオブジェクトがControllerから引き渡せていなかったり、参照したクラスフィールドが存在しない場合である。
${} と *{} の違い
このSpringInputFileFieldTagProcessorのエラーを引き起こす際に良くある原因として、オブジェクトの表記方法に原因がある。
thymeleafのオブジェクトの値を参照する時
th:value="${test.hoge}"
ダラー($)で表記することが良くある。
ただ、値を参照する際もう1つの表記方法がある。
それが
th:value="*{hoge}"
という表記である。
このアスタリスク(*)は、オブジェクトのフィールド名を指定する際に用いられる記号である。
つまり
<form th:object="${test}">
<input th:value="${test.hoge}">
</form>
と
<form th:object="${test}">
<input th:value="*{hoge}">
</form>
は同じ結果になる。
よくある間違いで、このように記述してしまうと今回のエラーになる。
<form th:object="${test}">
<input th:value="${hoge}">
</form>