2015-08-03 23 views
8

Tôi đang sử dụng Spring Boot cho một ứng dụng MVC, và công nghệ xem của tôi là Thymeleaf. Một trong những điều tôi cần làm là sao chép HTML của trang web hiện tại (không phải của tôi ...) và hiển thị nó bằng Thymeleaf. Tuy nhiên, một số HTML nguồn của trang web chứa các thẻ không khép kín HTML (như <meta>, <link>, <input>), hoặc thẻ HTML với các yếu tố không được bao quanh bởi dấu ngoặc kép, ví dụ:Spring Boot & Thymeleaf - loại bỏ lỗi HTML nghiêm ngặt kiểm tra

<div id=1></div>

thay vì

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

Tất nhiên trong trình duyệt này hoạt động ... Nhưng Thymeleaf sẽ không cho phép điều này và không phục vụ trang. Có cách nào để cho phép nhiều quy tắc khoan dung hơn cho điều này? Tôi đã tìm kiếm tài liệu và tài liệu tham khảo Spring Boot của Thymeleaf và không tìm thấy câu trả lời nào.

Chỉ cần làm rõ - Tôi thậm chí không cấu hình đậu của riêng mình cho Thyemeleaf, chỉ cần thêm nó vào classpath thông qua maven là một trong những spring-boot-starters. Vì vậy, ngay bây giờ đây là những cài đặt mặc định.

Trả lời

4

Như @mussdroid đã nói, mọi thứ cần phải có trong XML hợp lệ.Đây là một phần của tài liệu Thymeleaf giải thích nền tảng cho việc này: http://www.thymeleaf.org/doc/articles/fromhtmltohtmlviahtml.html

Ngoài ra, nếu đây là vấn đề, tôi tin rằng bạn có thể bật chế độ cũ để cho phép các mẫu không phải XML. : http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#what-kind-of-templates-can-thymeleaf-process

Tôi không biết làm cách nào để thay đổi chế độ, nhưng tôi chắc chắn DuckDuckGo thực hiện hoặc ai đó trên trang web này.

+0

Trong liên kết bạn đã cung cấp, HTML kế thừa có lẽ là những gì tôi đang tìm kiếm. Nhưng khi tôi chọn tùy chọn đó, mã Angularjs của tôi ngừng hoạt động ... Bất kỳ ý tưởng nào? – Ozilophile

+0

Vâng, theo liên kết thứ hai, Thymeleaf sửa đổi HTML của bạn để biến nó thành XML hợp lệ trước khi nó xử lý nó và xuất ra nó. Không chắc chắn nhưng tôi chắc chắn có thể tưởng tượng rằng screwing lên Angular. Bạn có thể cấu trúc công cụ của bạn theo cách để làm cho nó hoạt động, nhưng tôi có lẽ sẽ chỉ làm cho mọi thứ hợp lệ XML, nếu nó không làm việc quá nhiều. – xdhmoore

+0

Lỗi góc là gì? – xdhmoore

2

Mọi thứ phải là định dạng xthml

Ví dụ;

HTML LINK

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

THYMELEAF LINK NÊN ĐƯỢC kết thúc bằng "/>"

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

HTML META

<meta charset="UTF-8"> 

THYMELEAF META NÊN ĐƯỢC kết thúc bằng "/>"

<meta charset="utf-8"/> 

mẫu

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

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

khác trang sẽ không được hiển thị vì các quy tắc xhmtl áp dụng.

hãy có một cái nhìn tại liên kết, tránh những loại sai lầm HTML and XHTML

Mặt khác khi trang được quay trở lại trình duyệt, bạn sẽ thấy quy tắc xhtml chuyển đổi sang định dạng html nữa. Nhưng trang thực sự nó chạy trên một máy chủ trước khi gửi các quy tắc xhtml thymeleaf client được áp dụng.

6

Tôi biết tôi đang đưa ra câu trả lời sau một thời gian dài nhưng vẫn còn nếu nó có thể giúp cho bất kỳ ai tốt để chia sẻ.
Tôi giải quyết được sự cố sau khi thiết lập một thuộc tính
"spring, thymeleaf.mode" thành "LEGACYHTML5".

spring.thymeleaf.mode=LEGACYHTML5 

Và trong pom.xml, thêm sự phụ thuộc:

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

Nếu bạn muốn vô hiệu hóa bộ nhớ đệm của thymeleaf sau đó thymeleaf bộ nhớ đệm

spring.thymeleaf.cache=false 
2

Xuân Boot 1.5.3 supports Thymeleaf 3. Thymeleaf 3 có full html5 markup support.

Thêm các dòng sau đến pom.xml để ghi đè phiên bản Thymeleaf trong khởi động mùa xuân và bạn sẽ có thể sử dụng các thẻ không được đính kèm.

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

Câu trả lời hay nhất theo ý kiến ​​của tôi. Cẩn thận rằng mã được dán trong câu trả lời phải được thêm vào bên trong . –

Các vấn đề liên quan