Webflux Reactive objects not resolved before rendering Thymeleaf View(在渲染百里叶视图之前未解析Webflow反应对象)
问题描述
当我尝试在百里叶中呈现我的视图时,遇到错误Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'currentTemperature' cannot be found on object of type 'reactor.core.publisher.MonoMapFuseable' - maybe not public or not valid?
Spring WebFlux文档声明"具有反应类型包装器的模型属性被解析为它们的实际值",但是将Mono<;>作为模型传递给视图会给出上面的错误。
@RequestMapping(path = "/")
@GetMapping
public String home(Model model) {
Mono<ThermostatState> thermostatState = thermostatClient.fetchThermostatState();
model.addAttribute("thermostatState", thermostatState);
return "home";
}
阻止Mono<;>并展开内部值会使模板呈现不变,但在某种程度上消除了使用反应库的意义。
@RequestMapping(path = "/")
@GetMapping
public String home(Model model) {
Mono<ThermostatState> thermostatState = thermostatClient.fetchThermostatState();
ThermostatState unwrappedState = thermostatState.block();
model.addAttribute("thermostatState", unwrappedState);
return "home";
}
该项目完全依赖于Spring启动器依赖项,并且没有显式配置类。
推荐答案
我能够通过从我的pom.xml中删除以下内容来解决此问题
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
这是由Spring starter毫无怨言地添加的,但它与Webflow准不兼容。这个应用程序运行时没有任何问题,但当它在启动日志中报告它是从Tomcat启动的,而不是Netty时,你可以感觉到出了问题。这表明它是作为老式的MVC应用程序运行的,而不是Webflow应用程序。发现这一点后,我能够找到另一个问题的解释性答案:https://stackoverflow.com/a/48418409/23276(症状不同,但答案相同)。这里还有更多的解释:https://stackoverflow.com/a/51378560/23276
我最初能够通过创建一个单依赖项示例应用程序来证明事情是可行的,该应用程序按照我在文档中所期望的和看到的方式工作。然后,我尝试逐个删除不同的依赖项,直到发现冲突。
在对此进行故障排除时,我的IDE做了一些奇怪的事情来缓存依赖项,这阻碍了我的工作。当我拖到命令行并尝试使用mvn clean
和mvn spring-boot:run
直到找到损坏的依赖项时,发现问题变得更容易了。
这篇关于在渲染百里叶视图之前未解析Webflow反应对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在渲染百里叶视图之前未解析Webflow反应对象
基础教程推荐
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 在螺旋中写一个字符串 2022-01-01