2007年10月16日火曜日

Tag インターフェース

public interface Tag extends JspTag
static int EVAL_BODY_INCLUDE
    ボディの評価をストリームに含める
static int EVAL_PAGE
    ページの評価を続ける
static int SKIP_BODY
    ボディの評価をスキップする
static int SKIP_PAGE
    残りのページの評価をスキップする

______


ライフサイクル
setPageContext(PageContext pc)

setParent(Tag t)

属性のセット

doStartTag()
    EVAL_BODY_INCLUDE / SKIP_BODY

doEndTag()
    EVAL_PAGE / SKIP_PAGE

release()
______

<サンプル>
package scwcd;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;

public class TagSample implements Tag {
    private PageContext pc;
    private Tag t;
    public int doEndTag() throws JspException {
        return SKIP_PAGE;
    }
    public int doStartTag() throws JspException {
        JspWriter out = pc.getOut();
        try {
            out.println("Hello! World");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return SKIP_BODY;
    }
    public Tag getParent() {
        return t;
    }
    public void release() {}
    public void setPageContext(PageContext pc) {
        this.pc = pc;
    }
    public void setParent(Tag t) {
        this.t = t;
    }
}
____

scwcdTaglib.tld
<taglib>
    <short-name>certified</short-name>
    <tag>
        <name>tagsample</name>
        <tag-class>scwcd.TagSample</tag-class>
        <body-content>emply</body-content>
    </tag>
</taglib>
_____

web.xml
    <jsp-config>
        <taglib>
            <taglib-uri>/scwcdTaglib</taglib-uri>
            <taglib-location>/WEB-INF/tlds/scwcdTaglib.tld</taglib-location>
        </taglib>
    </jsp-config>
_____

tagsample.jsp
<%@ page contentType="text/html;charset=Shift_JIS"%>
<%@ taglib prefix="certified" uri="/scwcdTaglib"%>
<html>
<body>
<certified:tagsample />
</body>
</html>

<出力結果>
Hello! World

0 件のコメント: