Обработка тимелиста вручную - PullRequest
0 голосов
/ 30 мая 2020

Существующее приложение тимелеафа преобразуется для рендеринга вручную вместо того, чтобы позволить Spring делать это, чтобы мы могли обернуть вокруг него простые тесты, используя Mock MVC вместо запуска серверов для интеграционных тестов. Большая часть приложения конвертируется легко, но некоторые функции на некоторых страницах вызывают у нас трудности. Эти проблемы возникают при запуске приложения, а не при новом тестировании. Он не работал с шаблонами th: fragment в одном файле и не допускал @ {для относительных путей. Мы работали над этими проблемами, но застряли с проблемами в форме. В форме используются выражения выбора, такие как

<span class="inline-error-msg" th:if="${#fields.hasErrors('formLevel')}" th:errors="*{formLevel}" />

и

th:field="*{foo}"

Выражения выбора либо приводят к нулевому указателю, либо к этой ошибке:

Причина автор: org.attoparser.ParseException: не удалось связать ошибки формы с использованием выражения "* {formLevel}". Убедитесь, что это выражение выполняется в соответствующем контексте (например, с атрибутом th: object).

Наш механизм рендеринга выглядит следующим образом.

private String render(String model, Context context) {
    TemplateEngine templateEngine = new SpringTemplateEngine()
    templateEngine.setDialect(new SpringStandardDialect())
    templateEngine.templateResolver = templateResolver()
    templateEngine.setEnableSpringELCompiler(true);
    templateEngine.process(model, context)
}

ITemplateResolver templateResolver() {

    ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver()
    String prefix = "templates/"
    resolver.setPrefix(prefix)

    resolver.setSuffix(".html")
    resolver.setTemplateMode("HTML")
    resolver.setCharacterEncoding("UTF-8")
    resolver.setCacheable(false)
    return resolver
}

Я потратил дней по этому вопросу. Спасибо.

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