如何在 Thymeleaf + spring boot 控制器中显示来自 Flux 的数据
Posted
技术标签:
【中文标题】如何在 Thymeleaf + spring boot 控制器中显示来自 Flux 的数据【英文标题】:How to display data from Flux in Thymleaf + springboot controller 【发布时间】:2019-11-26 23:35:31 【问题描述】:我正在尝试显示从 Corda 节点接收到的进度跟踪器信息。我在 Springboot 控制器/Thymeleaf 中使用ReactiveDataDriverContextVariable
设置为控制器模型的属性,但它不起作用,它只显示我的变量的地址。
我已经尝试过site 中的教程
我的控制器看起来像(我设法从 Progresss tracker observable 创建了一个Flux
,myFlux)
public String index(final Model model)
// loads 1 and display 1, stream data, data driven mode.
IReactiveDataDriverContextVariable reactiveDataDrivenMode =
new ReactiveDataDriverContextVariable(myFlux, 100);
model.addAttribute("progressTracker", reactiveDataDrivenMode);
return "index";
我的百里香叶视图
<table id="Progress" class="table table-striped">
<thead>
<tr>
<th >Step</th>
</tr>
</thead>
<tbody>
<tr class="result" data-th-each="step: $progressTracker">
<td>[[$step]]</td>
</tr>
</tbody>
</table>
【问题讨论】:
您能否为您的问题提供更多背景信息?你能展示一下progresstracker 类以及你是如何获得这种通量的吗?在渲染方面您期望什么行为(网页应该立即渲染还是应该长期存在的进度信息?) 【参考方案1】:当您说“显示我的变量的地址”时,我相信您所指的哈希对象哈希正在打印,因为没有适当的 toString() 方法。
我相信您正在尝试打印 observable 而不是订阅它。例如,当您执行以下操作时,它并没有做太多,因为您尝试打印 observable。
val handle = proxy.startTrackedFlow(::MyFlow, val1, val2);
println(handle.progress);
你实际上应该做的是:
val handle = proxy.startTrackedFlow(::MyFlow, val1, val2);
handle.progress?.subscribe
println(it)
它应该打印进度步骤。
【讨论】:
以上是关于如何在 Thymeleaf + spring boot 控制器中显示来自 Flux 的数据的主要内容,如果未能解决你的问题,请参考以下文章
thymeleaf 和 spring 控制器之间的值如何传递,反之亦然
如何在 Spring Boot 中使用 Thymeleaf 保存角色?
如何在 thymeleaf 中访问 Spring session bean 范围