@NotNull 注释在 Spring boot 应用程序中不起作用

下面是我的 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

}

在这里,我尝试将createdDate字段注释为@NotNull,但它不起作用。它允许在请求正文中以及在邮递员中执行服务后不会收到任何错误。


我尝试过以下选项,但没有运气。


1)尝试添加maven依赖。


<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-validation</artifactId>

</dependency>

2)尝试将DTO类注释为@Validated


3)尝试用@NotNull注释createdDate字段@Valid但仍然不走运。


请帮我解决这个问题。


慕丝7291255
浏览 338回答 4
4回答

动漫人物

您的 DTO 类是正确的。你必须使用@Valid注释。例如 :@Controllerpublic class Controller {&nbsp; &nbsp; @PostMapping("/")&nbsp; &nbsp; public String checkPersonInfo(@Valid AbstractDTO abstractDTO, BindingResult bindingResult) {&nbsp; &nbsp; &nbsp; &nbsp; if (bindingResult.hasErrors()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "some-page";&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return "some-other-page";&nbsp; &nbsp; }}请参阅此Spring Boot 验证表单输入示例以供参考。为什么要使用@Valid注解?这允许您验证应用于类的数据成员的约束集。但是,如果您的项目中有基于 XML 的配置,则必须将其添加到下面给出的applicationContext.xml中。(来源:这里)<bean&nbsp; &nbsp; class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">&nbsp; &nbsp; <property name="webBindingInitializer">&nbsp; &nbsp; &nbsp; &nbsp; <bean&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <property name="validator" ref="validator" />&nbsp; &nbsp; &nbsp; &nbsp; </bean>&nbsp; &nbsp; </property></bean>&nbsp;&nbsp; &nbsp; <bean id="validator"&nbsp; &nbsp; &nbsp; &nbsp; class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">&nbsp; &nbsp; </bean>

湖上湖

您有一个带有某些请求正文的端点,例如;@RestControllerpublic class TheController {&nbsp; &nbsp; @PostMapping(path = "/doSomething", consumes = "application/json", produces = "application/json")&nbsp; &nbsp; public void post(@Valid @RequestBody AbstractDTO request) {&nbsp; &nbsp; &nbsp; &nbsp; //code&nbsp; &nbsp; }}您需要@Valid为请求对象添加注释。只有这样,您才能为端点启用AbstractDTO验证/doSomething。检查这里,了解更深入的细节

森林海

你有正确的进口吗?我用import javax.validation.constraints.NotNull;

凤凰求蛊

描述就我而言,我定义 1 个父类 A 有 3 个子类 B、C、D,例如:公共 A { 私有 B bCommand;&nbsp;私有 C cCommand;私有D dCommand;}我为3个子类中的一些字段注释了@NotNull、@NotBlank。在控制器中,我为这样的函数添加了@Valid:@PostMapping() public ResponseEntity create(@RequestBody @Valid Acommand){ }解决方案我为具有需要检查约束的字段的子类添加了@Valid。示例:B、C 类有一些字段具有非空等约束公共 A { @Valid private B bCommand;&nbsp;@Valid private C cCommand;&nbsp;私有D dCommand;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java