我正在构建一个具有一些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
怎么回事?
答案 0 :(得分:2)
如the Spring Boot reference documentation中所述,添加@EnableWebFlux
表示您希望完全控制WebFlux配置。在这种情况下,这包括Web验证。
现在有几种方法可以在应用程序中自定义资源处理-您可以使用各种spring.resources.*
配置键,或者添加实现WebFluxConfigurer
并覆盖addResourceHandlers
方法的自己的配置类
答案 1 :(得分:2)
感谢@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);
}
}