Springでネストしたオブジェクトの入力チェックを行う
ちょっと複雑な構造のフォームで入力チェックを行う方法について。
環境
- Spring Boot: 2.3.3
解決方法
独自クラスのリスト等、ネストしたオブジェクトを持つクラスをフォームに使用する際、通常は親オブジェクトにあるフィールドしか入力チェックの対象になりません。
子オブジェクトにも入力チェックを行いたい場合は、親オブジェクトの対象のフィールドに@Valid
をつけます。
記述例
@Data
public class ContentForm {
/** 記事リスト */
@Valid
private List<Article> articleList;
/** 雑誌ID */
private int magazineId;
// 省略
}
この例はArticle
クラス内にある各フィールドに対して入力チェックを行うようにしています。
@Valid
なしでは何のチェックもされずに素通りしてしまいますが、ネストしたフィールドに@Valid
を付けることによりリスト内の各フィールドに対して1つずつ入力チェックが実施されます。
参考
- Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
- 5.7.5 ネストしたJavaBeansの入力チェック
- 225ページ