Spring boot @Valid 无法正常工作

洪阮顺

我在 Spring 启动验证方面遇到了问题。目前,我使用 Oracle JDK 11.0.12 和 Spring boot 2.5.4 来构建我的项目。我添加了约束来验证字段,但它不起作用。我的代码在这里:

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

@Data
public class LoginFormDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @NotBlank(message = "Login must not be blank")
    private String login;

    @NotNull(message = "Password must be provided")
    private String password;

    private boolean rememberMe = false;
}
@RestController
@RequestMapping("/api")
public class AccountResource {

    // Logger and autowired components

    @PostMapping("/authenticate")
    @ResponseBody
    public ResponseEntity<JWTToken> authorize(@Valid @RequestBody LoginFormDTO account) {
        // Some code lines
        return ResponseEntity.ok().body(new JWTToken(jwt));
    }
}

依赖项 pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
    </dependency>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.googlecode.libphonenumber</groupId>
        <artifactId>libphonenumber</artifactId>
        <version>8.12.31</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-bean-validators</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
</dependencies>

我希望当我发送带有正文的 POST 请求时

{
  "login": null, // or empty string "", or blank string "    "
  "password": "string",
  "rememberMe": true
}

然后服务器应该验证字段然后在我的authorize(@Valid @RequestBody LoginFormDTO account)函数中执行代码之前抛出异常或错误(因为违反空约束),但它没有。那么弹簧验证有什么问题还是我遗漏了什么?

洪阮顺

我发现我的SwaggerConfig班级应该使用BeanValidatorPluginsConfiguration.class而不是SpringValidatorAdapter.classin @Import({})现在我的验证器正常工作。感谢 João Dias 支持我解决这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

控制器方法中requestBody上的Spring Boot @Valid无法正常工作

Spring Boot Security无法正常工作

Spring Boot @ControllerAdvice + @Transactional无法正常工作

Spring Boot @ConfigurationProperties无法正常工作

Spring Boot 搜索无法正常工作

Spring Boot + Spring Data JPA +事务无法正常工作

使用AspectJ的Spring Boot + Spring Security无法正常工作

Tomcat上的Spring Boot War部署无法正常工作

Spring-boot REST 安全配置角色无法正常工作

Spring Boot 2 Jersey实现无法正常工作

Spring Boot Tomcat部署无法正常工作Tomcat 7

Cron表达式无法正常工作于Spring Boot

Pojo验证的Spring Boot Pojo无法正常工作

spring-boot-starter-web @Autowired无法正常工作

Spring Boot中的Hibernate统计信息无法正常工作?

在Spring Boot中配置事务后,AspectJ无法正常工作

Spring Boot + Hibernate多租户:@Transactional无法正常工作

Websphere 8.5.5.12-Spring Boot无法正常工作

Spring Boot Dev Tools重启无法正常工作

带有Spring Boot 2.0 @ConfigurationProperties的Kotlin无法正常工作

我的Java Spring Boot Maven REST API无法正常工作

ssh注销后Spring Boot App无法正常工作

Spring Boot-Javax导入语句无法正常工作

Spring Boot执行器安全服务无法正常工作

Drools无法与Spring Boot一起正常工作

使用Spring-boot存根的Spock无法正常工作

使用 Spring Boot Maven 进行着色无法正常工作

Spring Boot 路由数据源无法正常工作

使用@Valid会引发异常,并且在基本的Spring 3.0 MVC程序中无法正常工作