在Spring-Webflux整合Thymeleaf时,出现Could not resolve view with name ‘xxxx' 问题。个人方法有问题可以打脸,不想看过程直接拉到最后,文中涉及webflux依赖版本为2.1.2
demo项目参考地址: 这是码云
在项目整合Thymeleaf时,无法识别view name问题,debug查找原因。
在 ServerResponseResultHandler做结果处理时会使用ViewResolverRegistry中注册的视图解析器,但是这个地方debug发现视图解析器是0个。
WebFluxConfigurationSupport涉及源码:
@Bean
public ServerResponseResultHandler serverResponseResultHandler() {
List<ViewResolver> resolvers = getViewResolverRegistry().getViewResolvers();
ServerResponseResultHandler handler = new ServerResponseResultHandler();
handler.setMessageWriters(serverCodecConfigurer().getWriters());
handler.setViewResolvers(resolvers);
return handler;
}
WebFluxConfigurationSupport -> ViewResolverRegistry.viewResolvers 是空的,下面就找这个resolverRegistry注册viewResovlers的地方。
WebFluxConfigurationSupport部分源码,此处是获取了视图解析器:</