実行画面

tagFragment.png

TagFragmentExam.jsp

<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib uri="/WEB-INF/tag.tld" prefix="myTag" %>

<html>

<head>
<title>JSP Fragment Example</title>
</head>

<body>

BEFORE TAG

<hr/>

<myTag:fragmentExam>
  <jsp:attribute name="attr">
    属性値です
  </jsp:attribute>
  <jsp:body>
    タグBODY (<jsp:body>タグを使う!!)
  </jsp:body>
</myTag:fragmentExam>

<hr/>

AFTER TAG

</body>

</html>

TagFragmentExam.java

package com.snail.sjcwc;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.JspFragment;

public class FragmentExam extends BodyTagSupport {

	private static final long serialVersionUID = 5584089467035326347L;

	private JspFragment attr = null;

	public void setAttr(JspFragment param) {
		attr = param;
	}

	public JspFragment getAttr() {
		return attr;
	}

	public int doStartTag() throws JspException {
		try {
			// JspFragment#invoke(Write out)で、HTMLにJSPフラグメント
			// を出力。何回でも呼び出せる
			getAttr().invoke(getAttr().getJspContext().getOut());
			getAttr().getJspContext().getOut().print("(<jsp:attribute name=\"***\">を使う)<br/>");
			
			// null を指定すると上記と同じ
			getAttr().invoke(null);
			getAttr().getJspContext().getOut().print("(<jsp:attribute name=\"***\">を使う)<br/>");
		} catch (IOException e) {

			e.printStackTrace();
			return SKIP_BODY;
		}
		return EVAL_BODY_BUFFERED;
	}

	public int doAfterBody() throws JspException {

		return SKIP_BODY;
	}

	public int doEndTag() throws JspException {

		try {
			pageContext.getOut().print(
					"[[The tag body is \"" + bodyContent.getString() + "\".]]");
			pageContext.getOut().flush();
		} catch (IOException e) {
			e = null;
		}

		return EVAL_PAGE;
	}
}

Java SJC-WC JSP#tagFragment


添付ファイル: filetagFragment.png 459件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2006-11-29 (水) 01:47:32 (3657d)
ISBN10
ISBN13
9784061426061