@NotNull 주석이 Spring 부팅 응용 프로그램에서 작동하지 않습니다.
아래는 저의 DTO 수업입니다.
public class AbstractDTO extends BaseDTO {
private Integer createdBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT)
@NotNull(message = "createdDate may not be null")
private LocalDateTime createdDate;
private Integer lastModifiedBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT)
private LocalDateTime lastModifiedDate;
private Boolean isActive;
// getter & setters
}
여기서 생성된 날짜 필드에 @NotNull로 주석을 달려고 하는데 작동하지 않습니다.우체부에서 서비스를 실행한 후 오류가 발생하지 않도록 요청 본문에서 허용하고 있습니다.
아래 옵션을 시도해 보았지만 실패했습니다.
메이븐 종속성을 추가하려고 했습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
DTO 클래스에 @Validated로 주석을 달려고 했습니다.
생성된 날짜 필드 @Valid에 @Null이 아닌 @Null에 주석을 달려고 했지만 여전히 행운이 아닙니다.
이 문제를 해결하는 것을 도와주세요.
DTO 클래스가 맞습니다.사용해야 합니다.@Valid주석
예:
@Controller
public class Controller {
@PostMapping("/")
public String checkPersonInfo(@Valid AbstractDTO abstractDTO, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "some-page";
}
return "some-other-page";
}
}
양식 입력 유효성 검사 시 이 스프링 부트 예제를 참조하십시오.
사용해야 하는 이유@Valid주석?
이를 통해 클래스의 데이터 멤버에 적용된 제약 조건 집합의 유효성을 검사할 수 있습니다.
그러나 프로젝트에 XML 기반 구성이 있는 경우 아래에 제공된 applicationContext.xml에 이를 추가해야 합니다. (출처: 여기)
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator" ref="validator" />
</bean>
</property>
</bean>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
</bean>
엔드포인트에 다음과 같은 요청 본문이 있습니다.
@RestController
public class TheController {
@PostMapping(path = "/doSomething", consumes = "application/json", produces = "application/json")
public void post(@Valid @RequestBody AbstractDTO request) {
//code
}
}
당신은 가지고 있어야 합니다.@Valid요청 개체에 대한 주석입니다.이 경우에만 유효성 검사를 사용할 수 있습니다.AbstractDTO위해서/doSomething종점의
자세한 내용은 여기를 참조하십시오.
수입품이 맞습니까?
사용합니다import javax.validation.constraints.NotNull;
묘사
- 저의 경우, 1개의 부모 클래스 A에는 다음과 같은 3개의 하위 클래스 B, C, D가 있다고 정의합니다.
public A {privateBbCommand}, privateCcCommand; privateDdCommand; }
- 3개의 하위 클래스에 있는 일부 필드에 대해 @NotNull, @NotBlank에 주석을 달았습니다.컨트롤러에서 다음과 같은 기능을 위해 @Valid를 입력했습니다.
@PostMapping() 공용 응답 엔티티 생성(@RequestBody @ValidA)
명령){ }
해결책
- 제약 조건을 확인해야 하는 필드가 있는 하위 클래스에 @Valid를 입력했습니다.
- 예: 클래스 B, C에는 null이 아닌 것과 같은 제약 조건이 있는 일부 필드가 있습니다.
public A { @Valid privateBbCommand; @Valid privateCcCommand; privateDdCommand; }
언급URL : https://stackoverflow.com/questions/58182553/notnull-annotation-is-not-working-in-spring-boot-application
'programing' 카테고리의 다른 글
| C/C99/C++/C+++x/GNU C/GNU C99의 열거형 서명 (0) | 2023.07.23 |
|---|---|
| PHP를 사용하여 파일 강제 다운로드 (0) | 2023.07.23 |
| 클래스의 상수에 액세스 (0) | 2023.07.18 |
| 파이썬에서 명시적인 '셀프'를 피하는 방법은 무엇입니까? (0) | 2023.07.18 |
| swagger-ui.html 기본 경로 변경 방법 (0) | 2023.07.18 |