Gibi skaffman önerdi , JSP 2.0 Etiket dosyaları arının dizleri vardır.
Basit örneğinizi ele alalım.
Aşağıdakileri yerleştirin WEB-INF/tags/wrapper.tag
<%@tag description="Simple Wrapper Tag" pageEncoding="UTF-8"%>
<html><body>
<jsp:doBody/>
</body></html>
Şimdi example.jsp
sayfanızda:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:wrapper>
<h1>Welcome</h1>
</t:wrapper>
Tam olarak düşündüğünüzü yapar.
Yani, bunu biraz daha genel bir şeye genişletelim.
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>
Bunu kullanmak için:
<%@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>
Seni ne satın alıyor? Gerçekten çok, ama daha da iyi oluyor ...
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>
Bunu kullanmak için: (istekte bir kullanıcı değişkenimiz olduğunu varsayalım)
<%@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>
Ancak bu kullanıcı ayrıntı bloğunu başka yerlerde kullanmaktan hoşlanırsınız. Yani, yeniden düzenleyeceğiz.
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/>
Şimdi önceki örnek:
<%@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 Tag dosyalarının güzelliği, temel olarak genel işaretlemeyi etiketlemenize ve ardından kalbinizin içeriğine yeniden yönlendirmenize izin vermesidir.
JSP Tag Files
gibi hemen hemen gasp şeyler var Tiles
en azından benim için, vb. Onları verdiğiniz tek yapı olduğu için, kullanımı daha kolay buluyorum. Ayrıca JSP etiket dosyalarını başka şeyler için de kullanabilirsiniz (yukarıdaki kullanıcı detayı parçası gibi).
İşte yaptığım DisplayTag'e benzer bir örnek, ancak bunların tümü Tag Files (ve Stripes
çerçeve, s: tags ..) ile yapılır. Bu, bir tablo, alternatif renkler, sayfada gezinme vb. İle sonuçlanır:
<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>
Tabii ki etiketler JSTL tags
(c:if
vb.) . Bir etiket dosyası etiketinin gövdesi içinde yapamayacağınız tek şey Java komut dosyası kodunu eklemektir, ancak bu düşündüğünüz kadar bir sınırlama değildir. Eğer scriptlet şeyler gerekiyorsa, ben sadece bir etikete mantık koymak ve etiketi bırakın. Kolay.
Dolayısıyla, etiket dosyaları olmasını istediğiniz her şey olabilir. En temel düzeyde, basit kesme ve yapıştırma yeniden düzenleme işlemidir. Bir yığın düzen alın, kesin, basit bir parametreleştirme yapın ve bir etiket çağırma ile değiştirin.
Daha yüksek bir düzeyde, burada sahip olduğum bu tablo etiketi gibi karmaşık şeyler yapabilirsiniz.