【问题标题】:Thymeleaf StringTemplateResolver with flux doesn't work带有通量的 Thymeleaf StringTemplateResolver 不起作用
【发布时间】:2020-09-15 08:19:29
【问题描述】:

我的配置在这里

@Configuration
class TemplateConfiguration {

    @Bean
    fun templateResolver(): StringTemplateResolver? {
        val templateResolver = StringTemplateResolver()
        templateResolver.templateMode = TemplateMode.TEXT

        return templateResolver
    }

    @Bean
    @Primary
    fun templateEngine(): SpringWebFluxTemplateEngine {
        var engine = SpringWebFluxTemplateEngine()
        engine.setTemplateResolver(templateResolver())
        return engine
    }
}

var books = Flux.fromArray(arrayOf(Book( ....), Book(....))
var context = Context()

var streamData = ReactiveDataDriverContextVariable(books, 10)
context.setVariable("books", streamData)

// then something like below
engine.process(template, context)

错误信息是: org.thymeleaf.templateparser.text.TextParseException:评估 SpringEL 表达式的异常:“book.price”(模板:“[# th:each="book: ${books}"] - [(${book.price})] [/]" …… 原因:org.springframework.expression.spel.SpelEvaluationException:EL1008E:在“org.thymeleaf.spring5.context.webflux.ReactiveDataDriverContextVariable”类型的对象上找不到属性或字段“价格” - 可能不公开或无效? ......

我认为 Flux Stream 没有正确传递是一个问题。 我该如何解决这个问题?

请帮助我,我提前为我的英语不佳道歉。

【问题讨论】:

    标签: kotlin thymeleaf spring-webflux


    【解决方案1】:

    我不确定这是一个解决方案(也许是一种解决方法??)

    我使用 collectList().map 而不是 ReactiveDataDriverContextVariable 然后它工作了

    var books = Flux.fromArray(arrayOf(Book( ....), Book(....))
    var context = Context()
    
    books.collectList()
         .map { list ->
    
                context.setVariable("books", list)
                engine.process(template, context)
          }
    

    这是某种独白^^;;;

    【讨论】:

      猜你喜欢
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2020-02-18
      • 2015-02-24
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      相关资源
      最近更新 更多