2016-03-26 19 views
6

tôi không taglibs bình, Tôi đang sử dụng một thẻ JSP để làm một cái gì đó như thế này:Thymeleaf có giống như thẻ JSP không?

ChildPage.jsp:

<%@ page contentType="text/html" pageEncoding="UTF-8" %> 
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %> 

<t:layout> 
    <jsp:attribute name="head"> 
     <link href="css/custom.css" type="text/css" rel="stylesheet"/> 
    </jsp:attribute> 
    <jsp:attribute name="scripts"> 
     <script src="js/custom.js"></script> 
    </jsp:attribute> 
    <jsp:body> 
     <p>This is from the child page</p> 
    </jsp:body> 
</t:layout> 

layout.tag :

<%@ tag description="Layout template" pageEncoding="UTF-8" %> 
<%@ attribute name="head" fragment="true" %> 
<%@ attribute name="scripts" fragment="true" %> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <link href="css/main.css" type="text/css" rel="stylesheet"/> 
     <jsp:invoke fragment="head"/> 
    </head> 
    <body> 
     <div id="body"> 
      <p>This is from the parent or "layout"</p> 
      <jsp:doBody/> 
     </div> 
     <div id="footer"> 
      <script src="js/main.js"></script> 
      <jsp:invoke fragment="scripts"/> 
     </div> 
    </body> 
</html> 

Khi render:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <link href="css/main.css" type="text/css" rel="stylesheet"/> 
     <link href="css/custom.css" type="text/css" rel="stylesheet"/> 
    </head> 
    <body> 
     <div id="body"> 
      <p>This is from the parent or "layout"</p> 
      <p>This is from the child page</p> 
     </div> 
     <div id="footer"> 
      <script src="js/main.js"></script> 
      <script src="js/custom.js"></script> 
     </div> 
    </body> 
</html> 

này cho phép tôi để bao gồm các kịch bản trong phần tiêu đề của JSP từ cả cách bố trí và các trang con. Tương tự cho cơ thể và chân trang.

Tôi đã đọc qua tài liệu/ví dụ Thymeleaf nhưng có thể tôi không hiểu chính xác vì có vẻ như tôi không thể làm những gì tôi đang cố gắng đạt được.

Lý do tại sao tôi đã "đảo ngược" những gì có vẻ như bao gồm đơn giản là mỗi trang mà tôi đã bao gồm một số tập lệnh nhất định và phần tiêu đề, nhưng các trang con của tôi cũng có các tập lệnh được nhập và bản định kiểu được đưa vào.

Tôi có thể đạt được điều này bằng cách nào đó không? Tôi có làm điều này sai không?

+0

bạn không muốn 'th: replace'? như '' –

+0

@ robertotomás Tôi không muốn thay thế tất cả nội dung bên trong nút '' của HTML, tôi muốn hợp nhất nội dung. – dkanejs

+0

Tôi thực sự không hiểu những gì bạn đang làm .. Tôi đoán nếu ví dụ của bạn có nhiều 'jsp: gọi fragments' nó sẽ khác nhau, nhưng trong trường hợp bạn cung cấp nó thực sự không phải là một cái gì đó bạn couldnt làm với thay thế đơn giản. –

Trả lời

3

Theo mặc định, Thymeleaf sử dụng cái gọi là Bố cục kiểu bao gồm. Nhược điểm của phương pháp này explained trên trang web chính thức. Tôi khuyên bạn nên sử dụng Thymeleaf Layout Dialect. Đây là phương ngữ thuận tiện hơn nhiều để tạo ra Bố cục kiểu phân cấp.

Nhân tiện, trong Ngôn ngữ bố cục, tất cả nội dung của thẻ <head> sẽ được tự động hợp nhất. Chỉ cần nhìn vào example.

+0

Tôi đã sử dụng phương ngữ bố cục Thymeleaf như được mô tả. Tôi sẽ đính kèm giải pháp cho câu hỏi của mình. – dkanejs

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