Tag Library'e Giriş

Cansiz

New member
Tag Library'e Giriş
Tag library View'in bir parçasıdır. Tag Library ile dinamik tagler üretmeniz mümkündür. En basit haliyle


PHP:
<yildiz:greeting/>
Olarak kullanılabilir. Yaptığımız örneklerde JSP sayfalarında kullanılmış olan Tag Libraryler;


PHP:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
Olup standart struts ile gelen ve WEB-INF klasöründe bulunan '.tld' dosyalarında tanımlı tagler kullanılmaktadır.
'.tld' dosyaları Tag Library Definition dosyalarıdır ve xml formatındadırlar.

JSP sayfalarında çokça kullanılan struts-html tagleri prefix (yani ön ek olarak) 'html' alarak kullanılırlar. Bir tag library JSP'de hangi prefix ile kullanılacaksa bu prefix attributesi ile belirtilir. Görüldüğü gibi struts-bean' deki tagler bean prefix'i ile kullanılırlar.


PHP:
<bean:tagname atr1=...,...></bean:tagname> gibi...
Java size kendi taglarinizi de yaratmanıza olanak tanır. Mesela; Fantezi olsun diye söylüyorum, hackhellde kullanıcıları listeleyen bir sayfa var. İşte o sayfa için her sayfada 10 adet kullanıcı görüntüleniyorsa database'e bağlanan,oradan değerleri alan ve belli html formatında table içine onları yayan tek bir tag yaratılabilir.Şöyle;



<hackhell:listmember start="20" listcount="10">
hackhell kullanıcıları
</hackhell:listmember>
İşte şuncacık kod parçası designer için databaseden 20. üyeden sonra olan 10 üyeyi alıp table'da basmaya yeter ve designer'ın bunun için kod yazmasına gerek yoktur. Designer'ın html ve sadece tag library'yi bilmesi yeterli olur.
Struts - Html Tag Library

struts-html.tld tag library ile JSP sayfalarında kullanılan tag'lere kısaca değineceğim.

<html:html> sayfaya bir <html> tagı yayar.
<html:errors/> Bu tag ise validasyonda oluşan hataları sayfaya basar.
<html:form> Tag sayfaya bir form tagı yayar.
<html:text property="isim"> Bu tag ile JSP sayfaya bir text field yayar.Diğer form elemanları isimlendirilirken de property attribute'si kullanılır.
<html: pasword> Tag bir password alanı koyar
<html:link> Bu tag <a> tagı ile bir hyperlink oluşturur.

<html:checkbox> Bir checkbox koyar.
<html:hidden> hidden form elementi yaratır.
<html:textarea> bir text alanı koyar.
<html:base/> Tag <base> tagını yaratır.Tag <head>' ın içinde yer alır.
Kendi Tag Library'mizi yaratalım

Kendi tagimizi yaratırken ve kullanırken şu koşullar gerekir;

JSP'de kullanırken JSP'ye yarattığınız tagi kullanabilmek için kullanılacak taglibrary'i belirtmek gerekir.



<%@ taglib uri="/WEB-INF/hackhell.tld" prefix="hackhell" %>
İşte bu satırlarla hackhell adında bir tld'yi hackhell prefix'i ile kullanacağız bunu belirledik.
Şimdi Tag Library'mize bir tag yaratalım ve ekleyelim.



import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public class YildizSignature extends TagSupport {
public int doStartTag() throws JspException {
try {
pageContext.getOut().print("Yildizib will exist!<br/>DeliDingin");
} catch (Exception ex) {
throw new JspTagException(ex.getMessage());
}
return SKIP_BODY;
}
public int doEndTag() {
return EVAL_PAGE;
}
}
Burada yeni bir tag yaratırken kullanılan class javax.servlet.jsp.tagext.TagSupport classıdır.

Class JSP sayfalarında kullanılan tag'in start ve end tagına rastlanıldığında nasıl davranacağını belirleyeceğimiz doStartTag() ve doEndTag() isimli metotları içermektedir.Basitçe bir html kodu bastırıyoruz.

Yarattığımız bu classı hackhell.tld'ye ekleyelim;


Kod:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib>
<tlibversion>1.0</tlibversion>

<jspversion>1.1</jspversion>

<shortname>Hackhell Tag Library</shortname>

<info>
Bu tag library'ye ve tag yarartmaya bir örnektir.
</info>
<tag>

<name>YildizibSignature</name>
<tagclass>YildizSignature</tagclass>
<bodycontent>empty</bodycontent>
</tag>

</taglib>
İşte görüldüğü gibi bir xml dosyasıyla bu yaratılan tag'ı belirttik.<taglib> elementinin içine yaratılan tagler <tag> elementiyle belirtilerek konurlar.

Bir tag yarattık ve tag Library'ye koyduk şimdi de deneme yapalım.index.jsp'de yarattığınız taglib'i deklare edin;



<%@ taglib uri="/WEB-INF/hackhell.tld" prefix="hackhell" %>
sonrada <body> nin içinde;



<hackhell:YildizibSignature/>
Yazın JSP'yi kaydedin ve browserden isteyin. Şöyle görünmeli;

 

HTML

Üst