Spring Boot & Thymeleaf-удалить строгую проверку ошибок HTML
Я использую Spring Boot для приложения MVC, и моя технология просмотра-Thymeleaf. Одна из вещей, которые мне нужно сделать, это скопировать HTML существующего веб-сайта (не мое дело...) и визуализировать его с помощью Thymeleaf. Однако некоторые исходные HTML-файлы веб-сайта содержат незамкнутые HTML-теги (например,<meta>
, <link>
, <input>
) или HTML-теги с элементами, не окруженными кавычками, например:
<div id=1></div>
вместо
<div id="1"></div>
конечно, в браузере это работает... Но Thymeleaf не позволит этого и не обслуживает страницу. Есть ли способ разрешить более мягкие правила для этого? Я искал документацию Thymeleaf и ссылку на весеннюю загрузку и не нашел ответа.
просто для уточнения - я даже не настроил свои собственные бобы для Thyemeleaf, просто добавил его в путь к классам через maven в качестве одного из стартеров spring-boot. Так что сейчас это настройки по умолчанию.
4 ответов
как сказал @mussdroid, все должно быть в допустимом XML. Вот часть документации Thymeleaf, объясняющая предпосылки для этого:http://www.thymeleaf.org/doc/articles/fromhtmltohtmlviahtml.html
кроме того, если это проблема, я считаю, что вы можете включить устаревший режим, чтобы разрешить шаблоны без XML, хотя я предпочел бы использовать действительный XML, если вероятный: http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#what-kind-of-templates-can-thymeleaf-process
Я сам не знаю, как изменить режим, но я уверен, что DuckDuckGo делает или кто-то на этом сайте.
Я знаю, что я даю ответ после долгого времени, но все же, если это может помочь кому-то, хорошо поделиться.
Я решил проблему после настройки одного свойства
"весна,thymeleaf.режим " на "LEGACYHTML5".
spring.thymeleaf.mode=LEGACYHTML5
и в ПОМ.xml, добавьте зависимость:
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.21</version>
</dependency>
Если вы хотите отключить кэширование thymeleaf, то Thymeleaf кэширование
spring.thymeleaf.cache=false
все должно быть в формате xthml
например:
HTML-ССЫЛКА
<link rel="stylesheet" type="text/css" href="mystyle.css">
Thymeleaf ссылка должна заканчиваться на"/>"
<link rel="stylesheet" href="print.css" media="print" type="text/css" />
HTML META
<meta charset="UTF-8">
Thymeleaf META должна заканчиваться на"/>"
<meta charset="utf-8"/>
образцы
<input type="text" name="lastname" disabled /> wrong
<input type="text" name="lastname" disabled="disabled" /> correct
в противном случае страницы не будут отображаться из-за применяемых правил xhmtl.
пожалуйста, посмотрите на ссылку, избегайте такого рода ошибок HTML и XHTML
С другой стороны, когда страница возвращается в браузер, вы увидите, что правила xhtml снова преобразуются в формат html. Но фактически страница, которую он запускает на сервере перед отправкой клиентских правил thymeleaf xhtml, применяется.
Весенняя Загрузка 1.5.3 поддерживает Thymeleaf 3. Thymeleaf 3 имеет полная поддержка разметки html5.
добавьте следующие строки в свой pom.xml
чтобы переопределить версию Thymeleaf в Spring boot, и вы сможете использовать незамкнутые теги.
<properties>
<thymeleaf.version>3.0.6.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.2.1</thymeleaf-layout-dialect.version>
...
</properties>