2013-02-17 2 views
0

유효성 검사기 주석이 주석 된 Java 클래스에 바인딩 된 JSON 페이로드에 Hibernate 유효성 검사기를 두 번 이상 사용하여 유효성을 검사하는 방법은 무엇입니까?문자열 용 Java 유효성 검사기

의 다음 I가 있다고 가정 해 봅시다 : 나는 사람에 JSON을 결합하고

class Person { 
String name; 
int age; 
} 

.

json으로 페이로드는 다음과 같습니다

{ 
"name":"someName", 
    "age":30 
} 

가의 페이로드 2 "이름"필드가 아래와 같이 반복이 있다고 가정 해 봅시다.

{ 
    "name":"someName", 
    "name" : "otherName", 
     "age":30 
} 

그런 다음이 유효성 검사기를 사용하여 유효성을 검사합니다. @Size (min = 1, max = 1)를 사용하면 Collection 객체에서 작동합니다.

나는이 작품을 String으로 만드는 방법에 대해 궁금해합니다. String을 사용하면 @Size는 문자열 내용의 길이를 찾고 문자열의 내용이 페이로드에없는 횟수를 찾습니다.

시간 내 주셔서 감사합니다.

답변

1

이것은 불가능합니다. JSON 비 직렬화 및 Bean 유효성 검사는 두 가지가 있습니다 전체가 가지입니다. Hibernate 유효성 검사가 일어날 때까지는 하나의 이름 필드를 갖는 Person 객체가있다.

JSON 라이브러리의 동작으로 "이름"필드 중 어느 것이 Java Bean로 비 직렬화 될 것인지 (예외가 발생할 것인지)를 결정합니다. 대부분의 경우 중복이 제공되지 않았 음을 확인하려면 사용자 정의 직렬화 코드를 작성해야합니다.

+0

Google GSON 및 Jackson 맞춤 디시리얼라이저를 사용해 보았습니다. 내가 찾은 것은 JsonNode 객체가 사용자 정의 디시리얼라이저 오버라이드 메소드로 들어가서 각각의 프레임 워크에 의해 삼킨 복제본을 얻었습니다. 내가하지 않는 메서드에서 기본 JSON 페이로드에 대한 모든 액세스 권한을 가져야한다고 생각했습니다. 따라서 프레임 워크 코드에서 파싱 구성 요소에 액세스하기 위해 한 걸음 뒤로 이동하지 않는 한 사용자 정의 역 직렬화가 여기서 작동하지 않을 수 있습니다. – serverfaces