首页 > 解决方案 > Spring 5 Webflux 休息控制器 - 如何执行输入验证?

问题描述

我正在构建一个具有一些 Rest Controller 的 Web 应用程序:

@RestController
@RequestMapping(value = Path.ROOT)
public class TestController {

    @Autowired
    private AService service;

    @RequestMapping(method = RequestMethod.POST)
    public Flux<ItemResponse> doSomething(@RequestBody @Valid final ItemRequest request) {
        return service.pleaseDoSomething(request);
    }


}

我的输入对象是这样的:

public Class ItemRequest{
   @NotNull
   private String anInputValue
}

我的应用有注释 @EnableWebFlux

问题是根本没有进行验证,当我删除以前的注释时,一切正常。

我正在使用 Spring boot 2.0.3 / tomcat dep

这是怎么回事 ?

标签: springspring-boothibernate-validatorspring-webflux

解决方案


谢谢@M。Deinum 和@Brian Clozel 这是我需要同时拥有百里香叶和验证工作的自定义配置类

@Configuration
@EnableWebFlux
public class WebFluxConfig implements WebFluxConfigurer {

    @Resource
    private ThymeleafReactiveViewResolver thymeleafReactiveViewResolver;

    @Autowired
    private Validator defaultValidator;

    @Override
    public Validator getValidator() {
        return defaultValidator;
    }

    @Override
    public void configureViewResolvers(final ViewResolverRegistry registry) {
        registry.viewResolver(thymeleafReactiveViewResolver);
    }

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                .resourceChain(false);
    }
}

推荐阅读