2016-03-26 43 views
6

ben böyle bir şey yapmak için bir JSP etiketi kullanıyorum, değil ortalama taglibs yapmak Thymeleaf'ın JSP etiketleri gibi bir şeyleri var mı?</p> <p><strong><em>ChildPage.jsp</em></strong>:

<%@ 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> 

işlenen olduğunda: Bu bana düzen ve çocuk sayfalarından hem JSP başlık bölümünde komut dosyalarını eklemenize olanak verir

<!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> 

. Gövde ve altbilgi için aynı.

Thymeleaf belgelerini/örneklerini okudum, ancak belki de anlamadığım şeyi yapabildiğim gibi görünmüyor olabilir.

Basit bir şekilde göründüğüm gibi "tersine çevrilmiş" olma nedenim, belirli komut dosyalarını ve başlık bölümlerini içerdiğim her sayfadır, ancak alt sayfalarm da içe aktarılacak komut dosyaları ve dahil edilecek stil sayfalarına sahiptir.

Bunu bir şekilde yapabilir miyim? Bunu yanlış mı yapıyorum?

+0

'th: replace' istemiyor musunuz? gibi ' –

+0

@ robertotomás HTML' ' düğümünün içindeki tüm içeriği değiştirmek istemiyorum, içeriği birleştirmek istiyorum. – dkanejs

+0

Aslında ne yaptığınızı anlamıyorum. Sanırım örneğiniz birden fazla jsp: fragmanları çağırıyorsa, bu farklı olurdu, ancak bunu sağladığınız takdirde basit bir ikame ile yapamayacağınız bir şey değil. –

cevap

3

Varsayılan olarak Thymeleaf, İçeren stil düzenleri'u kullanır. Resmi yaklaşımda bu yaklaşımın explained dezavantajları. Thymeleaf Layout Dialect'u kullanmanızı tavsiye ederim. Bu Hiyerarşik stil düzenleri oluşturmak için çok daha kullanışlı bir lehçe. Bu arada, Layout Dialect içinde <head> etiketinin tüm içeriği otomatik olarak birleştirilecektir. Sadece example'a bir göz atın.

+0

Tarif edildiği gibi Thymeleaf Layout Dialect'i kullandım. Çözümümü sorumuma ekleyeceğim. – dkanejs

İlgili konular