Артефакт Intellij jar с Spring Boot и Thymeleaf получает, режим шаблона "HTML" не настроен

В режиме, указанном в application.properties

#spring.thymeleaf.mode=HTML

Intellij Run Debug работает нормально, но выполнение jar из командной строки дает следующее, когда браузер пытается открыть страницу:

2018-12-24 12: 16: 13.957 ОШИБКА --- [0.1-8080-exec-1] org.thymeleaf.TemplateEngine: [THYMELEAF] [http-nio-12 7.0.0.1-8080-exec-1] Шаблон обработки исключения "result-sm": режим шаблона "HTML" не настроен 24 декабря 2018 г. 12:16:14 org.apache.catalina.core.StandardWrapperValve invoke СЕРЬЕЗНО: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] выдал исключение [Запрос на обработку fa iled; вложенное исключение - org.thymeleaf.exceptions.TemplateInputException: режим шаблона "HTML" не настроен] с первопричиной org.thymeleaf.exceptions.TemplateInputException: режим шаблона "HTML" не настроен в org.thymeleaf.TemplateRepository.getTemplate (TemplateRepository.java:256) в org.thymeleaf.TemplateEngine.process (TemplateEngine.java:1104) в org.thymeleaf.TemplateEngine.process (TemplateEngine.java:1060) в org.thymeleaf.TemplateEngine.process (TemplateEngine.java:1011) в org.thymeleaf.spring4.view.ThymeleafView.renderFragment (ThymeleafView.java:335) в org.thymeleaf.spring4.view.ThymeleafView.render (ThymeleafView.java:190) в org.springframework.web.servlet.DispatcherServlet.render (DispatcherServlet.java:1286)

Если объявление режима удалено из application.properties, jar предполагает, что это режим LEGACYHTML5, и пытается выполнить синтаксический анализ nekoHTML, который вообще не является HTML5. Например, он говорит, что <linK> не имеет подходящего </link>.

Кажется, у этого должен быть простой обходной путь, но я не смог его найти.

Спасибо

Обновлено: добавлен код для распознавателя шаблонов. Я скопировал это скопировал этот код с другого сайта без особого понимания. Он был изменен, чтобы соответствовать реальной структуре проекта. Я запустил его с помощью отладчика, и он, похоже, не был вызван.

    @Configuration
    @EnableWebMvc
public class ThymeleafConfig extends WebMvcConfigurerAdapter {

    @Bean
    public ClassLoaderTemplateResolver templateResolver() {

        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

        templateResolver.setPrefix("templates/");
        templateResolver.setCacheable(false);
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCharacterEncoding("UTF-8");

        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {

        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());

        return templateEngine;
    }

    @Bean
    public ViewResolver viewResolver() {

        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();

        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setCharacterEncoding("UTF-8");

        return viewResolver;
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
    }

У вас есть что-нибудь настроенное для вашего преобразователя шаблонов? Если да, опубликуйте код (он должен быть в классе с аннотацией @Configuration).

vphilipnyc 26.12.2018 17:24

Добавлен код преобразователя шаблонов.

Russell Salsbury 26.12.2018 22:46

Вы должны использовать статический TemplateMode.HTML вместо HTML при вызове templateResolver.setTemplateMode("HTML");. Затем закомментируйте spring.thymeleaf.mode=HTML и попробуйте. Я не знаю наверняка, решит ли это проблему. Если нет, можете ли вы также опубликовать свой шаблон result-sm?

vphilipnyc 26.12.2018 23:15

Также обратите внимание, что вы фактически отключаете конфигурацию по умолчанию для Spring Boot, включая конфигурацию. Если вы хотите пойти по этому пути, вы, вероятно, также захотите аннотировать с помощью @EnableWebMvc. docs.spring.io/spring-boot/docs/current/reference/htmlsingle‌ /…

vphilipnyc 26.12.2018 23:22

Я внес предложенные изменения, но все еще получаю сообщение «HTML TemplateMode не настроен». Я установил точки останова в ThymeleafConfig выше, и ни одна из них не сработала, что наводит меня на мысль, что это не было вызвано. Он был размещен на том же уровне в дереве исходных текстов, что и основной файл приложения. Я не публиковал результаты-sm, потому что это 600 строк очень запутанного html и js и работает в Intellij. Я выложу его, если сочтете нужным.

Russell Salsbury 27.12.2018 02:07

Можете ли вы вместо этого попробовать перейти на самую простую страницу без закрывающего тега ссылки? Нравится <!DOCTYPE html><html><head><link rel = "stylesheet" type = "text/css" href = "some.css"></head><body>Russell</body></html>? Так вы сможете узнать, есть ли это в вашем HTML.

vphilipnyc 27.12.2018 03:35

У вас не должно быть этой проблемы в новом проекте Spring Boot, так что что-то не так ...

vphilipnyc 27.12.2018 03:36

Чтобы изолировать, вы также можете попробовать полностью удалить конфигурацию и строку spring.thymeleaf.mode=HTML и позволить Spring Boot управлять всем этим.

vphilipnyc 27.12.2018 04:01

Я создал базовую страницу, как было предложено. Тот же набор проблем, работает на Intellij, а не как jar. Без настройки режима в application.properties по умолчанию используется HTML5. Intellij обнаруживает ошибку и меняет режим на HTML. Баночка пытается использовать режим HTML% и не работает по ссылке. Те же проблемы, если я удалю ThymeleafConfig.

Russell Salsbury 27.12.2018 18:38

Я установил точки останова в ThymeleafConfig, но ни одна из них не срабатывает. Это когда-нибудь выполняется? Я что-то еще упускаю. Это не свежий проект, но я впервые попытался создать банку.

Russell Salsbury 27.12.2018 18:41

По крайней мере, мы знаем, что это не HTML. В вашем pom.xml есть ли у вас spring-boot-maven-plugin? Необходимо создать исполняемую банку согласно документации. Вы можете увидеть, пропустили ли вы какие-либо шаги здесь: docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/html‌ /…

vphilipnyc 28.12.2018 01:58

Похоже, что бобы никогда не вызываются. Я изменил подписи bean-компонентов, чтобы они соответствовали подписям в руководстве по миграции Tymeleaf 3, но они все равно не вызывались.

Russell Salsbury 29.12.2018 02:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
12
322
0

Другие вопросы по теме