

以下のように、コレクションをフィールドにもったクラスのValidationをSpringで行うときに、コレクションの各要素に対して、入力チェック時のエラーメッセージを別々に変えたいという場合はどのようにすればよいでしょうか。

[code]

    public ParentForm {
        private List<ChildForm> chlidFormList;
    }
    
[/code]

[code]

    public ChildForm {
        private String hoge;
        private String fuga;
    }
    
[/code]

例えば、上記の状態でのChildFormのhogeに対して＠NotBlankを設定すると仮定した場合に

[code]

    １番目のhogeは入力必須です
    ２番目のhogeは入力必須です
    ３番目のhogeは入力必須です
    その他のhogeは入力必須です
    
[/code]

といったように、Listの何番目かによって出力されるエラーメッセージを変えるということを実現したいです。

ロジック側で直接Validatorを呼び出して入力チェックを行う方法もあるとは思いますが、ロジック側のクラスに修正をあまり加えたくはないため、できればアノテーションベースの入力チェックにしたいと考えております。

また、コレクションの中身すべてに同一のチェックを行わせるのが基本だとは思いますが、データ構造を変えることもできない状況です。

ご存知の方がいらっしゃいましたら、どうかご教授いただけないでしょうか。


CC BY-SA 4.0
2020-08-25T05:29:06.697
69852
2021-02-19T08:03:52.413
2020-08-25T06:26:53.337
40136
40136
question
java spring
Springでコレクションに対して要素別にvalidationを行う方法


普通のやり方はないと思います。

先ず、エラー発生の判断条件はtrueまたはfalse,他はない。次は、エラーメッセージの生成は変数を含めていません、つまり、変数を渡されない（annotationは変数を使えない）、1234どっちなのかは判断できません。

他の方法はあるかもしれませんけれど、綺麗な書き方ではありませんと思います。

ps:外国人です。


CC BY-SA 4.0
2021-02-19T07:57:57.020
74132
2021-02-19T08:03:52.413
2021-02-19T08:03:52.413
44030
44030
69852
answer