Thymeleaf StringTemplateResolver с потоком не работает - PullRequest
0 голосов
/ 28 мая 2020

Моя конфигурация здесь

@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' - возможно, не publi c или недопустимый? ......

Я думаю, что проблема в том, что поток Flux Stream не был доставлен должным образом. Как я могу решить эту проблему?

Пожалуйста, помогите мне, и я заранее прошу прощения за бедняков моего английского sh.

1 Ответ

0 голосов
/ 28 мая 2020

Я не уверен, что это решение (может быть, это обходной путь ??)

Я использую 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)
      }

Это какой-то монолог ^^ ;;;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...