2016-03-26 12 views
6

मुझे लगता है मैं एक JSP टैग का उपयोग कर रहा है इस तरह कुछ करने के लिए मतलब taglibs नहीं कर ,क्या थाइमेलीफ में जेएसपी टैग की तरह कुछ है?</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> 

प्रदान की गई जब:

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

यह मैं दोनों लेआउट और बच्चे पृष्ठों से JSP के हैडर अनुभाग में स्क्रिप्ट शामिल करने के लिए अनुमति देता है। शरीर और पाद लेख के लिए वही।

मैंने थाइमेलीफ दस्तावेज़/उदाहरणों के माध्यम से पढ़ा है लेकिन शायद मैं सही ढंग से समझ नहीं पा रहा हूं क्योंकि ऐसा नहीं लगता कि मैं जो हासिल कर रहा हूं वह कर सकता हूं।

कारण है कि मैंने सरल रूप से क्या लगता है "उलटा" है, जिसमें प्रत्येक पृष्ठ में कुछ स्क्रिप्ट और हेडर सेक्शन शामिल है, लेकिन मेरे बच्चों के पृष्ठों में स्क्रिप्ट को आयात करने और स्टाइलशीट शामिल करने के लिए भी शामिल हैं।

क्या मैं इसे किसी भी तरह से प्राप्त कर सकता हूं? क्या मैं यह गलत कर रहा हूँ?

+0

आप नहीं चाहते हैं 'वें: प्रतिस्थापित करें'? जैसे < ' –

+0

@ robertotomás मैं HTML '' नोड के अंदर सभी सामग्री को प्रतिस्थापित नहीं करना चाहता, मैं सामग्री को मर्ज करना चाहता हूं। – dkanejs

+0

मैं वास्तव में समझ नहीं पा रहा हूं कि आप क्या कर रहे हैं .. मुझे लगता है कि अगर आपके उदाहरण में एकाधिक 'jsp: टुकड़े का आह्वान करें' तो यह अलग होगा, लेकिन यदि आपने प्रदान किया है तो वास्तव में ऐसा कुछ नहीं है जिसे आप सरल प्रतिस्थापन के साथ नहीं कर सकते। –

उत्तर

3

डिफ़ॉल्ट रूप से थाइमेलीफ तथाकथित शामिल स्टाइल लेआउट का उपयोग करता है। आधिकारिक साइट पर इस दृष्टिकोण के explained के नुकसान। मैं आपको Thymeleaf Layout Dialect का उपयोग करने की सलाह दूंगा। पदानुक्रमित शैली लेआउट बनाने के लिए यह अधिक सुविधाजनक बोली है।

वैसे, लेआउट डायलेक्ट में <head> टैग की सभी सामग्री स्वचालित रूप से विलय हो जाएगी। बस example पर एक नज़र डालें।

+0

मैंने वर्णन के अनुसार थाइमेलीफ लेआउट डायलेक्ट का इस्तेमाल किया। मैं अपने प्रश्न को अपने प्रश्न से जोड़ दूंगा। – dkanejs

संबंधित मुद्दे