javax 유효성 검사 제약 조건이 Spring Boot에서 작동하지 않음
Spring Boot 응용 프로그램에서 @Not Empty, @NotBlank 및 @NotNull과 같은 주석을 실행할 수 없습니다.
저는 다음의 (놀라운) 예를 따랐습니다.
https://spring.io/guides/gs/validating-form-input/
제가 뭘 잘못하고 있는지 모르겠어요
POJO:
import javax.validation.constraints.NotBlank;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class College
{
@NotBlank
private String collegeCode;
.
.
.
스프링 컨트롤러:
@RequestMapping(value="/addCollege", method = RequestMethod.POST)
public String addCollege(@Valid @ModelAttribute("college") College college, BindingResult bindingResult, Model model, HttpSession session)
{
if(bindingResult.hasErrors()) //this is never true
{
logger.debug("Errors when adding new college!!!");
return "admin/colleges/addCollege";
}
collegeProcessor.saveCollege(college);
return getAllColleges(model, session);
}
화면:
<form action="#" th:action="${addOrEdit} == 'add' ? @{/addCollege} : @{/updateCollege}" th:object="${college}" method="post">
<table class="table">
<tr>
<td>College Code</td>
<td><input size="10" name="collegeCode" th:field="*{collegeCode}"/></td>
<div id="errors" th:if="${#fields.hasErrors('collegeCode')}" th:errors="*{collegeCode}"></div>
</tr>
.
.
.
@NotBlank뿐만 아니라 @Not Empty 및 @NotNull도 시도했지만 동일한 현상이 발생합니다.내 화면은 입력의 유효성을 검사하지 않으며, 빈 collegeCode를 가진 대학 개체를 저장할 수 있습니다.
흥미로운 것은 만약 내 POJO를 대신 사용하지 않는 최대 절전 모드 검증기를 사용하도록 변경한다면...
import org.hibernate.validator.constraints.NotBlank;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class College
{
@NotBlank
private String collegeCode;
.
.
.
...확인이 실행되고 화면에서 College 개체를 빈 collegeCode로 저장할 수 없습니다.
javax.validation.constraints validationator를 사용할 때 내 유효성 검사가 작동하지 않는 이유를 알려줄 수 있는 사람이 있습니까?
버전 2.3.0 이후.릴리스 유효성 검사 스타터는 기본적으로 웹/웹 플럭스 스타터에 포함되어 있지 않으므로 수동으로 추가해야 합니다.자세한 내용은 여기를 참조하십시오.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.3.0에 대한 메이븐 종속성을 포함합니다.그러나 Pom.xml의 릴리스는 Spring Boot Application의 하위 버전에는 필요하지 않습니다.
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
제가 이 문제를 해결한 것 같습니다.저도 같은 문제가 있어서 스프링 부트 버전을 낮추려고 했습니다.스프링 부트 버전을 2.3.0에서 낮췄습니다.2.2.7로 릴리스합니다.릴리스하면 효과가 있음) 아마도 이 대답이 누군가에게 도움이 될 것입니다.
컨텍스트에 MethodValidationPostProcessor를 추가하십시오.
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
정확히 같은 문제를 가지고 있어서 어떻게 해야 할지 모르겠어요.필요한 모든 클래스는 클래스 경로에 있으며 지옥은 없습니다.
I m using spring boot 2.3.12 the contract first api is generate with swagger 3.0.0:
생성된 속성입니다.
@ApiModelProperty(required = true, value = "")
@NotNull
public String getEmail() {
return email;
}
다음은 제가 사용한 종속성입니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Validation API support -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
</dependencies>
언급URL : https://stackoverflow.com/questions/56527965/javax-validation-constraints-not-working-in-spring-boot
'programing' 카테고리의 다른 글
rest 컨트롤러에 대해서만 기본 URL을 변경하는 방법은 무엇입니까? (0) | 2023.08.05 |
---|---|
npm을 사용하여 "devDependencies"만 설치하는 방법 (0) | 2023.08.05 |
Oracle 내보내기 덤프 파일의 내용 나열 (0) | 2023.08.05 |
mongoDB로 Excel 파일(XLSX)을 가져오는 방법 (0) | 2023.08.05 |
MariaDB 계산된 필드에 고유 제약 조건 추가 (0) | 2023.08.05 |