【问题标题】:How to display data from Flux in Thymleaf + springboot controller如何在 Thymeleaf + spring boot 控制器中显示来自 Flux 的数据
【发布时间】: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 width="70%">Step</th>
            </tr>
            </thead>
            <tbody>
            <tr class="result" data-th-each="step: ${progressTracker}">
                <td>[[${step}]]</td>
            </tr>
            </tbody>
        </table>

【问题讨论】:

  • 您能否为您的问题提供更多背景信息?你能展示一下progresstracker 类以及你是如何获得这种通量的吗?在渲染方面您期望什么行为(网页应该立即渲染还是应该长期存在的进度信息?)

标签: spring-boot thymeleaf corda spring-webflux


【解决方案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)
 }

它应该打印进度步骤。

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 2019-04-14
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多