-JSP-APIガイド

JSPカスタムタグは、以下の4種です。

  • javax.servlet.jsp.tagext.Tag extends JspTag
    • setPageContext(PageContext): void
    • setParent(Tag): void
    • getParent(): Tag
    • doStartTag(): int
    • doEndTag(): int
    • release(): void
  • javax.servlet.jsp.tagext.IterationTag extends Tag
    • doAfterBody(): int
  • javax.servlet.jsp.tagext.BodyTag extends IterationTag
    • setBodyContent(BodyContent): void
    • doInitBody(): void

  • javax.servlet.jsp.tagext.SimpleTag extends JspTag
    • doTag(): void
    • setParent(JspTag jsptag): void
    • getParent(): JspTag
    • setJspContext(JspContext): void
    • setJspBody(JspFragment): void


このうち、SimpleTagは捨てよう!2.0からの採用なので、StrutsJSFJSTLもこのSimpleTagはありません。また、Tag・IterationTag・BodyTagと完全に系が違うのでハンドルを2パターン実装しないといけなくなってしまいます。また引数に現れるJspFragmentも捨てたい。SimpleTagは重要なカスタムタグライブラリで採用されていることが発覚するか強い要望あったら盛り込むということにしたいと思います。あと重要なのは以下のインターフェイス。

  • javax.servlet.jsp.tagext.TryCatchFinally
    • doCatch(Throwable throwable): void
    • doFinally(): void

これらが、MayaがJSPカスタムタグをインジェクションするために利用するメソッドの地平線です。そして、TagやBodyTagの引数に現れる重要な二つの抽象クラスは既存のカスタムタグが当然利用しているので実装しなければなりません。

ほかはJSPカスタムタグを利用するだけで、JSP仕様に準拠するのではないから、あまり重要ではないはず。

  • Tag.SKIP_BODY = 0;
  • Tag.EVAL_BODY_INCLUDE = 1;
  • Tag.SKIP_PAGE = 5;
  • Tag.EVAL_PAGE = 6;
  • IterationTag.EVAL_BODY_AGAIN = 2;
  • BodyTag.EVAL_BODY_BUFFERED = 2;

カスタムタグが返す可能性のある、int型の定数は上記のとおりです。これだけ。