2017-11-15 20 views
0

내가 노력하고있어이에 적용하지JPA, 최대 절전 모드 검사기 이메일 검사기는 내 컨트롤러</p> <p>스택에 DTO를 확인하는 방법을 알아 내기 위해 문자열

문제는 여전히 유효성 검사기 누락에 대한 예외가 발생하고 있다는 것입니다.

실마리가 있습니까?

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Email' validating type 'java.lang.String'. Check configuration for 'email' 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.throwExceptionForNullValidator(ConstraintTree.java:227) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorNoUnwrapping(ConstraintTree.java:308) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorInstanceForAutomaticUnwrapping(ConstraintTree.java:242) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:163) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:116) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:87) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 
    at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:73) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:616) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final] 

DTO

public class CreateUserDto { 

    @NotEmpty 
    private String name; 

    @Email 
    @NotEmpty 
    private String email; 

    private String password; 

    private String address; 

    private String phone; 

    @NotNull 
    private Role role; 
} 

컨트롤러

@PostMapping(value = "/users", consumes = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
@ResponseStatus(HttpStatus.CREATED) 
public UserDto register(@Valid @RequestBody CreateUserDto user) { 
    return userService.register(user); 
} 

답변

2

당신은 BV 1.1을 지원 최대 절전 모드 검사기 5.4 콩 검증 2.0을 사용하는 의심. @Email 제약 조건은 2.0의 사양에 추가되었습니다. 그 전에는 HV 특정 제약 사항 만있었습니다.

아마도 validation-api 2.0에 종속성을 추가했을 것입니다.

그래서 :

  • 중 하나는 BV 1.1로 돌아가서 당신은 (패키지 org.hibernate.validator.constraints에서) 최대 절전 모드 검사기 특정 @ 이메일 제약 조건을 사용해야합니다;
  • 또는 HV를 6.0 (권장)으로 업그레이드하고 BV 2.0 및 javax.validation @Email 제약 조건을 유지해야합니다. 나는 6.0 HV를 업그레이드하고 지금 일하고있어
+0

, 감사 – vlcik

+1

내가 HV 6.0.5 및 BV 2.0이 오류를 수신 : javax.validation.UnexpectedTypeException : HV000030 : 없음 유효성이 제약를 찾을 수 없습니다 'javax의 .validation.constraints.Email '유효성 검사 유형'java.lang.String '. –

+0

클래스 경로에 HV 5.x가 설치되어 있지 않습니까? 그렇지 않다면 테스트 사례 템플릿 (https://github.com/hibernate/hibernate-test-case-templates/tree/master/validator)을 사용하여 테스트 사례를 재현하고 문제 추적기에 게시하십시오. https : // hibernate .atlassian.net /. 감사. –