2015-08-03 5 views
8

Sto usando Spring Boot per un'applicazione MVC e la mia tecnologia di visualizzazione è Thymeleaf. Una delle cose che devo fare è copiare l'HTML di un sito web esistente (non farlo mio ...) e renderlo usando Thymeleaf. Tuttavia, alcuni dei HTML sorgente del sito contengono i tag non chiusi HTML (come ad esempio <meta>, <link>, <input>), o tag HTML con elementi non circondati da virgolette, per esempio:Spring Boot & Thymeleaf - rimuove il rigoroso controllo degli errori HTML

<div id=1></div>

invece di

<div id="1"></div> ).

Ovviamente nel browser funziona ... Ma Thymeleaf non lo consente e non serve la pagina. C'è un modo per consentire regole più clementi per questo? Ho cercato la documentazione di Thymeleaf e il riferimento Spring Boot e non ho trovato risposta.

Solo per chiarimenti: non ho nemmeno configurato i miei bean per Thyemeleaf, ma l'ho aggiunto al classpath via maven come uno degli starter di avvio a molla. Quindi adesso queste sono le impostazioni predefinite.

risposta

4

Come ha detto @mussdroid, tutto deve essere in XML valido.Ecco parte della documentazione di Thymeleaf che spiega lo sfondo per questo: http://www.thymeleaf.org/doc/articles/fromhtmltohtmlviahtml.html

Inoltre, se questo è un problema, credo che sia possibile attivare la modalità legacy per consentire modelli non XML, anche se preferirei usare XML valido se possibile : http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#what-kind-of-templates-can-thymeleaf-process

Non so come modificare la modalità, ma sono sicuro che DuckDuckGo o qualcuno su questo sito.

+0

Nel link che hai fornito, Legacy HTML è probabilmente quello che sto cercando. Ma quando scelgo questa opzione, il mio codice Angularjs smette di funzionare ... Qualche idea? – Ozilophile

+0

Sì, secondo quel secondo link, Thymeleaf modifica il tuo codice HTML per renderlo valido XML prima che lo elabori e lo trasmetta. Non sono sicuro, ma potrei sicuramente immaginare di rovinare Angular. Potresti essere in grado di strutturare le tue cose in un modo per farlo funzionare, ma probabilmente farei semplicemente tutto XML valido, se non è troppo lavoro. – xdhmoore

+0

Qual è l'errore angolare? – xdhmoore

2

Tutto dovrebbe essere formato linguaggi xhtml

Per esempio;

LINK HTML

<link rel="stylesheet" type="text/css" href="mystyle.css"> 

THYMELEAF collegamento deve essere finendo con "/>"

<link rel="stylesheet" href="print.css" media="print" type="text/css" /> 

HTML META

<meta charset="UTF-8"> 

THYMELEAF META DEVONO ESSERE finendo con "/>"

<meta charset="utf-8"/> 

campioni

<input type="text" name="lastname" disabled /> wrong 

<input type="text" name="lastname" disabled="disabled" /> correct 

altrimenti le pagine non verranno visualizzati a causa delle regole XHMTL applicate.

prega di dare un'occhiata al link, evitare questo tipo di errori HTML and XHTML

D'altra parte quando la pagina è tornare al browser si vedrà regole xhtml converte in formato html di nuovo. Ma la pagina effettivamente eseguita su un server prima di inviare le regole del thymeleaf xhtml del client vengono applicate.

6

So che sto dando una risposta dopo molto tempo ma ancora se può aiutare a chiunque sia bello condividere.
Ho risolto il problema dopo aver impostato una proprietà
"spring, thymeleaf.mode" in "LEGACYHTML5".

spring.thymeleaf.mode=LEGACYHTML5 

E nel pom.xml, aggiungere la dipendenza:

<dependency> 
    <groupId>net.sourceforge.nekohtml</groupId> 
    <artifactId>nekohtml</artifactId> 
    <version>1.9.21</version> 
</dependency> 

Se si desidera disabilitare la cache di thymeleaf poi thymeleaf caching

spring.thymeleaf.cache=false 
2

Primavera Boot 1.5.3 supports Thymeleaf 3. Thymeleaf 3 ha full html5 markup support.

Aggiungere le seguenti righe al tuo pom.xml per sostituire la versione di Thymeleaf in Spring boot e sarai in grado di utilizzare tag non chiusi.

<properties> 
    <thymeleaf.version>3.0.6.RELEASE</thymeleaf.version> 
    <thymeleaf-layout-dialect.version>2.2.1</thymeleaf-layout-dialect.version> 
    ... 
</properties> 
+0

La risposta migliore a mio parere. Attento che il codice incollato nella risposta debba essere aggiunto all'interno di . –