@NotNull annotation is not working in Spring boot application. Why?
下面是我的DTO课程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 } |
在这里,我尝试将createdDate字段注释为@NotNull,但它不起作用。它允许在请求正文中,并且在邮递员中执行服务后未出现任何错误。
我尝试了以下选项,但没有运气。
1)尝试添加maven依赖项。
1 2 3 4 | <dependency> <groupId>org.springframework.boot</groupId> spring-boot-starter-validation</artifactId> </dependency> |
2)尝试将DTO类注释为@Validated
3)尝试使用@NotNull注释createdDate字段@Valid,但还是不走运。
请帮助我解决此问题。
您的端点具有一些请求正文,例如;
1 2 3 4 5 6 7 8 | @RestController public class TheController { @PostMapping(path ="/doSomething", consumes ="application/json", produces ="application/json") public void post(@Valid @RequestBody AbstractDTO request) { //code } } |
您需要为请求对象添加
在此处查看更多详细信息
您的DTO是正确的。
来自Spring Boot验证表单输入示例:
使用
例如:
1 2 3 4 5 6 7 8 9 10 11 12 | @Controller public class Controller { @PostMapping("/") public String checkPersonInfo(@Valid AbstractDTO abstractDTO, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return"page"; } return""; } } |
为什么要使用
此外,您必须在applicationContext.xml(来源:此处)中添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <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> |
您输入的内容正确吗?
我使用