Şablon oluşturma kolaylaştırmak için JSP hileler?
İş yerinde JSP
basit bir proje içinde HTML
dosyaları bir sürü dönüm ile görevli oldum. Gerçekten statik, programa sunucu taraflı mantık. Java için tamamen yeni olduğumu belirtmeliyim. JSP dosyaları gibi yapmak kolay iş ile ortak içerir ve Değişkenler gibi PHP
, ama bilmek istiyorum basit bir yol almak gibi bir şey şablon kalıtım (Django
tarzı) ya da en azından güçlü bir temel.jsp dosya üstbilgi ve altbilgi içeren, daha sonra içerik eklemek istiyorum.
Ben Sebep Olmuşcevabı burada:bazı umut vaat ediyor gibi görünüyor JSP template inheritance Birisi bunu başarmak için nasıl açıklar?
Düşününce ben pek zaman bence dinamik yönlendirme, biraz çok, çok mutluyum için sadece URL göster doğrudan üzerine .jsp
dosyaları, ama ben açmak için öneri.
Teşekkürler.
düzenleme:Kendim için bir öğrenme eğrisi ve proje üzerinde çalışan diğer artıracak, çünkü herhangi bir harici kütüphaneleri kullanmak istemiyorum, ve çalıştığım şirket bunu yapmak için anlaşma yaptı.
Başka bir edit:Eğer JSP tags
içeriğim gerçekten herhangi bir şablon değişkenleri olmadığı için yararlı olacak mı emin değilim. İhtiyacım olan şey bunu yapabilmek için bir yoldur:
base.html:
<html><body>
{ content.body }
</body></html>
somepage.html
<wrapper:base.html>
<h1>Welcome</h1>
</wrapper>
çıkış:
<html><body>
<h1>Welcome</h1>
</body></html>
Bu bana yeterli ben gereken her şeyi yapmak için çok yönlülük vereceğini düşünüyorum. includes
ile elde etmiş olabilir ama bir üst gerekir ve bir alt tür dağınık ve her kapsayıcı için vardır.
CEVAP
Skaffman de belirtildiği gibiJSP 2.0 Etiket Dosyalarıbu arı diz.
Bu basit örnek alalım.
WEB-INF/tags/wrapper.tag
aşağıdaki koyduk
<%@tag description="Simple Wrapper Tag" pageEncoding="UTF-8"%>
<html><body>
<jsp:doBody/>
</body></html>
example.jsp
sayfa: şimdi
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:wrapper>
<h1>Welcome</h1>
</t:wrapper>
O senin düşündüğün şeyi yapıyor.
Yani, bir şey için bu konuya biraz daha genel genişletin sağlar.
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>
Bu 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>
Bunu alır mısın? Çok çok ama çok daha iyi
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>
Bu kullanın: (istek kullanıcı bir değişken vardır)
<%@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>
Ama diğer yerlerde bu kullanıcı detay bloğu kullanmak gibi çıkıyor. Bu yüzden, onu yeniden yapacağız.
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 bir önceki örnek olur:
<%@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ı güzelliği temelde genel işaretleme etiketi ve sizin içerik için onu yeniden sonra izin vermesidir.
JSP Tag Files
hemen hemen Tiles
vb. gibi şeyler ele geçirmiş en azından benim için. Onları çok daha kolay sadece yapı sana ne olarak kullanmak için bulmak, hiçbir şey önyargılı. Artı diğer şeyler (kullanıcı detay parçası yukarıdaki gibi) için JSP tag dosyaları kullanabilirsiniz.
İşte yaptığım DisplayTag benzer bir örnek, ama bu tüm Tag Dosyaları ile yapılır (Stripes
çerçeve, s: etiketler..). Satır, alternatif renkleri, sayfa tablosu bu sonuçlara navigasyon, vb.:
<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>
Elbette etiketleri JSTL tags
(c:eğer, vb.) ile çalışır. Etiket bünyesinde yapamayacağın tek şey etiket, java komut dosyası uygulamacığı kodu ekleyin dosya, ama bu düşündüğün gibi bir sınırlama olarak değil. Eğer komut dosyası uygulamacığı şeyler lazım olursa, ben sadece mantığı bir etiket koymak ve etiketi bırakın. Kolay.
Yani, etiket dosyaları hemen hemen istediğiniz herhangi bir şey olabilir. En temel düzeyde, basit kes ve yapıştır yeniden düzenleme. Düzeni bir parça al, kes şunu, bazı basit prosedür ve etiket çağırma ile değiştirin.
Yapabileceğiniz daha yüksek bir düzeyde bu tablo gibi sofistike şeyler var tag.
Nasıl dosya oluşturma ve Tarih değişik...
R oturumunda hileler mevcut bellek yön...
Nasıl başlatılıyor işlemek için ve Bac...
Nasıl bir şablon motoru olarak undersc...
Nasıl olursa underscore.js ifadeleri b...