haradaTags.tld
<?xml version="1.0"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>harada Custom Tag Library</shortname> <!-- CusFormat --> <tag> <name>haradaformat</name> <tagclass>harada.haradaformat</tagclass> <bodycontent>empty</bodycontent> <attribute> <name>property</name> <required>true</required> </attribute> </tag> </taglib>
tldファイルにはカスタムタグの定義を記述する。
name・・・カスタムタグの名前
tagclass・・・classファイルのマッピング
attribute・・・タグの属性。上記の例ではproperty属性を追加している。
harada.jsp
<%@ taglib prefix="ht" uri="/WEB-INF/tlds/haradaTags.tld" %> <html> <script language="javascript"> function onclickFunc(){ alert("aa"); } </script> <form name = "form1"> test <input type="button" onclick="onclickFunc()" tabindex="1"> <ht:haradaformat property="moji" ></ht:haradaformat> <% int i = 0 ; %> <%= i++ %> <%= i++ %> </form> </html>
<@taglib でタグライブラリをインポート
prefix・・・自由に決めてよい
uri・・・tldファイルの格納先を指定
haradaformat.java
package harada; import java.io.IOException; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public final class haradaformat extends TagSupport { String property; public void setProperty(String property){ this.property = property; } public int doEndTag() throws JspException { return EVAL_PAGE; } public int doStartTag() throws JspException { try{ //出力 pageContext.getOut().print(property + "-go"); } catch(Exception e){ throw new JspException(e.getMessage()); } return SKIP_BODY; } }
TagSupportを継承すること。
また、Property属性を定義したのsetterを作っておく必要がある。
EVAL_PAGE、SKIP_BODYについてはヘルプなどを参照。
■コンパイルコマンド
※classpathにservlet.jarを通しておくこと
javac -classpath "C:\Interstage\APW\eclipse\plugins\org.eclipse.tomcat_4.0.3\servlet.jar" "d:\haradaformat.java"
■配置したディレクトリ
--jsp |
--WEB-INF |
|
|--classes
| |
| |-harada
| |
| |-haradaformat.class
|
|
|--tlds
|
|-haradaTags.tld