如何在Thymleaf + springboot控制器中显示来自Flux的数据

时间:2019-07-18 05:25:35

标签: spring-boot thymeleaf corda spring-webflux

我正在尝试显示从Corda节点收到的进度跟踪器信息。我正在使用ReactiveDataDriverContextVariable作为Springboot控制器/ Thymeleaf中控制器模型的属性,但是它不起作用,它只显示变量的地址。

我已经尝试过本site

中的教程

我的控制器看起来像(我设法通过可观察到的Progresss跟踪器myFlux创建了Flux

    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>

1 个答案:

答案 0 :(得分:1)

当您说“显示变量的地址”时,由于没有适当的toString()方法,我相信它所引用的哈希对象哈希将被打印。

我相信您正在尝试打印可观察的内容,而不是订阅它。例如,当您执行以下操作时,它并没有执行很多操作,因为您尝试打印可观察对象。

val handle = proxy.startTrackedFlow(::MyFlow, val1, val2);
println(handle.progress);

您实际上应该做的是这样:

 val handle = proxy.startTrackedFlow(::MyFlow, val1, val2);
 handle.progress?.subscribe {
      println(it)
 }

它应该打印进度步骤。