15

リスト内の個々の文字列が null/空でないこと、または特定のパターンに従っていないことを確認するにはどうすればよいですか

@NotNull
List<String> emailIds;

パターンも追加したい

@Pattern("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b.")

しかし、リスト内の文字列がnullまたは空白かどうかをチェックする制約が絶対に必要です。また、Jsonスキーマはどのようになりますか

"ids": {
      "description": "The  ids associated with this.", 
    "type": "array",
        "minItems": 1,
        "items": {
        "type": "string",
         "required" :true }
 }

"required" :true does not seem to do the job
4

4 に答える 4

11

電子メール文字列の単純なラッパー クラスを作成できます。

public class EmailAddress {

    @Pattern("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\b.")
    String email;

    //getters and setters
}

@Valid次に、既存のオブジェクトのフィールドをマークします。

@NotNull
@Valid
List<EmailAddress> emailIds;

その後、バリデータはリスト内の各オブジェクトを検証します。

于 2014-03-06T19:11:41.647 に答える
8

文字列のリストを検証するためだけにラッパー クラスを使用する必要はありません。validator-collection の@EachPattern制約を使用するだけです:

@NotNull
@EachPattern(regexp="\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\b.")
List<String> values;

それだけです。簡単ですよね?詳細については、このSO の回答を参照してください。

于 2014-04-03T01:08:51.797 に答える