どのように私は春ブーツでJSONリクエストを検証していますか?

Rishabh Bansal氏:

私は、クライアント側から受け取っていJSON要求を検証します。私は、(アノテーションを使用して試してみました@notnull, @length(min=1,max=8)、などなど)を、それが正常に動作しているが、問題は、私は、彼らが無効な場合に呼び出さ取得されるフィールドとメッセージを取得することはできませんよということです。けれども、私は私のコンソールにエラーメッセージを取得しています。

制約違反のリスト:

[
  ConstraintViolationImpl
  {
    interpolatedMessage=
    'must be greater than or equal to 900000000',
    propertyPath=phoneNumber,
    rootBeanClass=class
    com.org.infy.prime.RestWithJPA.CarrierFile,
    messageTemplate=
    '{javax.validation.constraints.Min.message}'
  }
  ConstraintViolationImpl
  {
    interpolatedMessage=
    'length must be between 1 and 20',
    propertyPath=accountID,
    rootBeanClass=class
    com.org.infy.prime.RestWithJPA.CarrierFile,
    messageTemplate=
    '{org.hibernate.validator.constraints.Length.message}'
  }
]

誰もがこの上で私を助けるか、少なくとも私に、より効率的な方法で要求を検証するための選択肢を与えることができれば、要求。

PS:私はフィールドでそれフィールドを検証する必要はありません。

OneMoreError:

あなたはこのような何かを行うことができます:言うが、これは要求クラスは次のとおりです。

public class DummyRequest {

    @NotNull
    private String  code;

    @NotNull
    private String  someField;

    @NotNull
    private String  someOtherField;

    @NotNull
    private Double  length;

    @NotNull
    private Double  breadth;

    @NotNull
    private Double  height;

    // getters and setters
}

その後、あなたはこのような「それほど冗長」制約違反のメッセージを、与える独自のジェネリックvalidateメソッドを書くことができます。

public static <T> List<String> validate (T input) {
    List<String> errors = new ArrayList<>();
    Set<ConstraintViolation<T>> violations = Validation.buildDefaultValidatorFactory().getValidator().validate(input);
    if (violations.size() > 0) {
        for (ConstraintViolation<T> violation : violations) {
            errors.add(violation.getPropertyPath() + " " + violation.getMessage());
        }
    }
    return errors;
}

さて、あなたは、検証とあなたの要求に誤りが含まれているかいないかどうかを確認することができます。そうならば、あなたはそれを印刷(または無効な要求メッセージを送り返す)することができます。

public static void main (String[] args) {
    DummyRequest request = new DummyRequest();
    request.setCode("Dummy Value");
    List<String> validateMessages = validate(request);
    if (validateMessages.size() > 0 ) {
        for (String validateMessage: validateMessages) {
            System.out.println(validateMessage);
        }
    }
}


Output:
--------
height may not be null
length may not be null
someField may not be null
someOtherField may not be null
breadth may not be null

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=213421&siteId=1