カスタムタグ


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についてはヘルプなどを参照。



コンパイルコマンド
classpathservlet.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