Spring in action@valid 인증 이 적용 되 지 않 는 문 제 를 어떻게 해결 합 니까?
책 에 있 는 예제 코드 에 따라 이 루어 졌 으 나 검증 이 추가 되 었 으 나 효력 이 발생 하지 않 았 다.
Spring 은 Api 를 사용 하 는 지 검 사 를 제 공 했 지만 실현 을 제공 하지 않 았 기 때문에 실행 패 키 지 를 직접 가 져 와 야 합 니 다.
그래서 구현 패키지 가 져 오기:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
그러나 문제 가 해결 되 지 않 아 프로그램 이 정상적으로 실행 되 고 검증 이 유효 하지 않 습 니 다.이전에 Maven 으로 jar 신문 을 가 져 왔 을 때 찾 을 수 없 음 을 알려 줍 니 다.이전의 해결 방법 은 Jar 가방 을 Tomcat 의 lib 폴 더 에 버 리 는 것 이 었 다.
그래서 위 에 Maven 에서 다운로드 한 jar 가방 두 개 를 잃 어 버 렸 습 니 다.과연 변화 가 생 겼 습 니 다.이번에 오류 가 발생 하여 프로그램 이 정상적으로 작 동 하지 못 했 습 니 다.
오류 보고:
Hibernate Validator java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl
그리고 해결 방법 을 찾 았 습 니 다.Stack Overflow 에서 해결 방법 을 찾 았 습 니 다.org.jboss.logging 과 com.faster xml classmate 가방 이 없어 서 Maven 에 추 가 했 습 니 다.
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.2.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.3.4</version>
</dependency>
그러나 문 제 를 해결 하지 못 했 습 니 다.옛날 방법 으로 이 두 개의 Jar 가방 을 Tomcat 의 lib 폴 더 에 버 리 고 문 제 를 해결 합 니 다.최근 Maven 에서 가 져 온 가방 이 실 행 될 때 유효 하지 않 은 문제 가 많이 발생 했 습 니 다.오 류 를 보고 하지 않 지만 실 행 될 때 nodefClass 오류 가 발생 했 습 니 다.
해결책 찾기:아이디어 가 져 오기 maven 프로젝트 에 jar 패키지 가 부족 한 문 제 를 해결 하 는 방법
springboot@Validate 가 유효 하지 않 은 이유
vaidate 관련 주 해 를 사용 하 였 으 나 유효 하지 않 은 문제 입 니 다.
public class LoginRequest implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = " ", required = true, example = "18888888")
@Pattern(regexp = RegularConstants.PHONE, message = " ")
@JsonProperty(value = "phone")
private String phone;
@ApiModelProperty(value = " ", required = true, example = "1~[6,18]")
@Pattern(regexp = RegularConstants.PASSWORD, message = " , , 6~18 , 、 ")
private String password;
}
해결 방향hibenate 관련 의존 도입
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.21.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
관련 설정
@Configuration
public class ValidatorConfiguration {
@Bean
public Validator validator() {
ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
.configure()
.addProperty("hibernate.validator.fail_fast", "true")
.buildValidatorFactory();
return validatorFactory.getValidator();
}
}
전역 차단 인증 오류
@RestControllerAdvice
public class WebGlobalExceptionHandler {
// private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
/**
* JSON
*/
// @ResponseStatus(HttpStatus.OK)
@ExceptionHandler(MethodArgumentNotValidException.class)
public CommonResult bindException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
return CommonResult.failed(ExceptionCodeEnum.VALIDATE_FAILED,Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
}
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.