2014-12-30 2 views
1

내 질문은 Resteasy Bean Validation Not Being Invoked과 유사합니다. 그러나 솔루션은 작동하지 않습니다.Resteasy Bean 유효성 검사가 다시 호출되지 않음

resteasy-validator-provider-11과 함께 Resteasy 3.0.9.Final을 사용하고 있습니다. 커스텀 Jetty 클래스를 사용하여 모든 것을 시작합니다.

@PathParams에서는 이상하게 작동하지만 bean에서는 유효하지 않습니다.

@POST 
@Path("/foo/{myParam}") 
public Message post(MyBean myBean, @PathParam("myParam") @Size(min=5) String myParam) { 
    return new Message("bean:" + myBean.toString()); 
} 

public static class MyBean { 

    @NotNull 
    public String myStr; 

    @Max(value = 3) 
    public int myInt; 

    public String toString() { 
     return myStr + myInt; 
    } 
} 

이 경우 myParam의 @Size 제약 조건은 정상적으로 작동합니다. 그러나 MyBean의 @NotNull 및 @Max 제약 조건은 호출되지 않습니다.

어노테이션이 누락 되었습니까?

여기에 단서가 하나 있습니다. 문제는 당신이 MyBean 매개 변수에 @Valid 누락하고 있다는 것을,

2014-12-30 12:16:56 org.hibernate.validator.internal.util.Version 6446 INFO HV000001: Hibernate Validator 5.0.1.Final 
2014-12-30 12:16:56 org.jboss.resteasy.plugins.validation.AbstractValidatorContextResolver 6477 INFO Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory 
+0

링크 된 링크는 resteasy의 베타 버전입니다. 코드는 어떤 방식 으로든 최종본이 아닙니다. –

답변

2

나는 생각하지만, 100 % 확인 : 내 로그는 이러한 항목을 포함한다. 또한 정적 클래스가 아닌 별도의 클래스로 만들 것을 권장합니다.

사양에 따라 개체가 복잡한 개체 인 메서드의 유효성 검사 제약 조건은 제약 조건이 계단식으로 유지되도록 @Valid 주석이 달린 매개 변수가 있어야합니다.

+0

빙고, 그게 다야. Resteasy 문서와 달리, bean 유효성 검사는 기본적으로 켜져 있지 않습니다. (BTW, 정적 클래스를 사용하는 것이 좋습니다.) – ccleve

+0

기본적으로 켜져 있지 않다는 것은 무엇을 의미합니까? '@ Valid' 요구 사항은 bean val spec에서 온 것입니다. –

+0

http://docs.jboss.org/resteasy/docs/3.0.9.Final/userguide/html_single/index.html#d4e2497 "기본적으로 켜져 있음"이라는 의미는 다소 모호합니다. – ccleve

관련 문제