【问题标题】:Does spring webflux supports javax bean validation?spring webflux 是否支持 javax bean 验证?
【发布时间】:2017-11-06 06:21:01
【问题描述】:

我用@NotNull 注释了我的bean,并在@GetMapping 中使用了spring @Valid 注释。但这没有用。

我从其他应用程序中看到的唯一区别是我使用@EnableWebMvc 而不是@EnableWebFlux

在控制器中:

    @PostMapping(value = "/something")
    public Mono<ResponseEntity> save(
                                @Valid @RequestBody MyBean mybean) {
        return myService.save(myBean)
                .map(RestResponses::ok)
                .defaultIfEmpty(RestResponses.empty());
    }

在Application.java中:

    @SpringBootApplication
    @EnableWebFlux
    public class Application {

        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

我的豆类:

    import org.springframework.data.annotation.Id;
    import org.springframework.data.redis.core.RedisHash;
    import org.springframework.data.redis.core.index.Indexed;

    import javax.validation.constraints.NotNull;
    import java.util.Objects;

    @RedisHash("mybean")
    public class MyBean {

        @Id
        private Long id;

        @NotNull
        @Indexed
        private String name;

        //getters, setters...

    }

和 pom.xml:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.M1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

...

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </dependency>

</dependencies>

我做错了吗?

【问题讨论】:

  • 能否请您添加您的 get 方法的代码?
  • @Orest,完成!感谢您的关注。
  • 还有MyBean 类。还有你有什么弹簧靴版本2.0.0M1
  • @Orest。抱歉,我忘记了。
  • 所以在依赖项中你也有org.glassfish:javax.el 对吗?

标签: java spring validation spring-mvc spring-webflux


【解决方案1】:

实际上存在一些依赖问题。 在依赖项中你可以看到这两个库:

org.hibernate:hibernate-validator:5.4.1.Final
javax.validation:validation-api:1.1.0.Final

根据文档Hibernate Validator,您应该为Unified Expression Language提供额外的依赖

compile group: 'org.glassfish', name: 'javax.el', version: '3.0.1-b08'

@Valid 之后注解应该可以正常工作。

【讨论】:

  • 这个问题有机会吗?当我删除 @EnableWebFlux 时,我遇到了完全相同的问题,一切都很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
  • 2010-11-17
相关资源
最近更新 更多