जैसा कि skaffman ने सुझाव दिया है , JSP 2.0 टैग फ़ाइलें मधुमक्खी के घुटने हैं।
चलिए आपका सरल उदाहरण लेते हैं।
निम्नलिखित में डालें WEB-INF/tags/wrapper.tag
<%@tag description="Simple Wrapper Tag" pageEncoding="UTF-8"%>
<html><body>
<jsp:doBody/>
</body></html>
अब आपके example.jsp
पेज में:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:wrapper>
<h1>Welcome</h1>
</t:wrapper>
आप जैसा सोचते हैं वैसा ही करते हैं।
तो, उस पर कुछ और सामान्य करने के लिए विस्तार की सुविधा देता है।
WEB-INF/tags/genericpage.tag
<%@tag description="Overall Page template" pageEncoding="UTF-8"%>
<%@attribute name="header" fragment="true" %>
<%@attribute name="footer" fragment="true" %>
<html>
<body>
<div id="pageheader">
<jsp:invoke fragment="header"/>
</div>
<div id="body">
<jsp:doBody/>
</div>
<div id="pagefooter">
<jsp:invoke fragment="footer"/>
</div>
</body>
</html>
इसका उपयोग करने के लिए:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:genericpage>
<jsp:attribute name="header">
<h1>Welcome</h1>
</jsp:attribute>
<jsp:attribute name="footer">
<p id="copyright">Copyright 1927, Future Bits When There Be Bits Inc.</p>
</jsp:attribute>
<jsp:body>
<p>Hi I'm the heart of the message</p>
</jsp:body>
</t:genericpage>
वह आपको क्या खरीदता है? बहुत कुछ, लेकिन यह और भी बेहतर हो जाता है ...
WEB-INF/tags/userpage.tag
<%@tag description="User Page template" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<%@attribute name="userName" required="true"%>
<t:genericpage>
<jsp:attribute name="header">
<h1>Welcome ${userName}</h1>
</jsp:attribute>
<jsp:attribute name="footer">
<p id="copyright">Copyright 1927, Future Bits When There Be Bits Inc.</p>
</jsp:attribute>
<jsp:body>
<jsp:doBody/>
</jsp:body>
</t:genericpage>
इसका उपयोग करने के लिए: (मान लें कि हमारे पास अनुरोध में एक उपयोगकर्ता चर है)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:userpage userName="${user.fullName}">
<p>
First Name: ${user.firstName} <br/>
Last Name: ${user.lastName} <br/>
Phone: ${user.phone}<br/>
</p>
</t:userpage>
लेकिन यह आपको उस उपयोगकर्ता विस्तार ब्लॉक को अन्य स्थानों पर उपयोग करना पसंद करता है। तो, हम इसे रिफ्लेक्टर करेंगे।
WEB-INF/tags/userdetail.tag
<%@tag description="User Page template" pageEncoding="UTF-8"%>
<%@tag import="com.example.User" %>
<%@attribute name="user" required="true" type="com.example.User"%>
First Name: ${user.firstName} <br/>
Last Name: ${user.lastName} <br/>
Phone: ${user.phone}<br/>
अब पिछला उदाहरण बन गया है:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:userpage userName="${user.fullName}">
<p>
<t:userdetail user="${user}"/>
</p>
</t:userpage>
JSP टैग फ़ाइलों की सुंदरता यह है कि यह आपको मूल रूप से जेनेरिक मार्कअप को टैग करने देता है और फिर इसे आपके दिल की सामग्री के लिए फिर से सक्रिय करता है।
JSP Tag Files
Tiles
कम से कम मेरे लिए इत्यादि जैसी बहुत सी बेकार चीजें हैं । मैं उन्हें केवल संरचना के रूप में उपयोग करने के लिए बहुत आसान लगता हूं जो आप इसे देते हैं, जो कुछ भी नहीं है। साथ ही आप अन्य चीजों के लिए जेएसपी टैग फ़ाइलों का उपयोग कर सकते हैं (जैसे उपयोगकर्ता विस्तार टुकड़ा ऊपर)।
यहाँ एक उदाहरण है जो DisplayTag के समान है जो मैंने किया है, लेकिन यह सब Tag Files (और Stripes
फ्रेमवर्क, कि s: टैग ..) के साथ किया जाता है। यह पंक्तियों की एक तालिका में, वैकल्पिक रंग, पृष्ठ नेविगेशन आदि का परिणाम देता है:
<t:table items="${actionBean.customerList}" var="obj" css_class="display">
<t:col css_class="checkboxcol">
<s:checkbox name="customerIds" value="${obj.customerId}"
onclick="handleCheckboxRangeSelection(this, event);"/>
</t:col>
<t:col name="customerId" title="ID"/>
<t:col name="firstName" title="First Name"/>
<t:col name="lastName" title="Last Name"/>
<t:col>
<s:link href="/Customer.action" event="preEdit">
Edit
<s:param name="customer.customerId" value="${obj.customerId}"/>
<s:param name="page" value="${actionBean.page}"/>
</s:link>
</t:col>
</t:table>
बेशक टैग JSTL tags
(जैसे c:if
, आदि) के साथ काम करते हैं । केवल एक चीज जो आप एक टैग फ़ाइल टैग के शरीर के भीतर नहीं कर सकते हैं वह है जावा स्क्रिप्टलेट कोड, लेकिन यह उतना सीमित नहीं है जितना आप सोच सकते हैं। अगर मुझे स्क्रिप्टलेट सामान की आवश्यकता है, तो मैं तर्क को एक टैग में डाल देता हूं और टैग को आसान में छोड़ देता हूं।
इसलिए, टैग फ़ाइलें बहुत अधिक हो सकती हैं जो आप उन्हें चाहते हैं। सबसे बुनियादी स्तर पर, यह सरल कट और पेस्ट रिफैक्टरिंग है। लेआउट का एक हिस्सा पकड़ो, इसे काटें, कुछ सरल पैरामीटर करें, और इसे टैग आह्वान के साथ बदलें।
एक उच्च स्तर पर, आप इस तालिका टैग जैसी परिष्कृत चीजें कर सकते हैं जो मेरे पास यहां हैं।