SSブログ

タグライブラリの作成方法

■用意するファイル
(例)Webアプリケーション名=springApp
1. tldファイルを用意
/springApp/WebContent/WEB-INF/apptaglib.tld

2. タグハンドラーJavaクラスを作成
spring.app.tag.BeanHiddenTagHandler.java

3. JSPから呼び出す

■詳細
1. tldファイル(/WEB-INF/apptaglib.tld)
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
<tlib-version>1.0</tlib-version>
<!-- タグライブラリの名称とtldファイルの紐づけ -->
<short-name>apptaglib</short-name>
<uri>/WEB-INF/apptaglib</uri>

<!-- タグの定義 -->
<tag>
<!-- タグの名前 -->
<name>SampleTag</name>
<!-- タグハンドラクラス -->
<tag-class>spring.app.tag.BeanHiddenTagHandler</tag-class>
<!-- bodyを持つかどうか -->
<body-content>empty</body-content>
<!-- 属性の定義。attributeを複数並べられる。 -->
<attribute>
<!-- 属性名 -->
<name>beanName</name>
<!-- 必須属性かどうか -->
<required>true</required>
<!-- 実行時評価属性かどうか -->
<rtexprvalue>true</rtexprvalue>
<!-- 属性の型 -->
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>


2. タグハンドラーJavaクラス
・属性が必要な場合はsetterが必要
・スコープからオブジェクト取得する場合、pageContext.findAttribute("属性名");で取得可能

spring.app.tag.BeanHiddenTagHandler.java

package spring.app.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class BeanHiddenTagHandler extends TagSupport {
/** Beanが格納されている属性名 */
private String beanName = "";

/**
* @param beanName セットする beanName
*/
public void setBeanName(String beanName) {
this.beanName = beanName;
}

@Override
public int doEndTag() throws JspException {
// 出力
try {
pageContext.getOut().print("タグに設定した入力値=" + beanName);
} catch (IOException e) {
e.printStackTrace();
}
// 残りのページを評価する値を返して終了
return EVAL_PAGE;
}
}

3. JSP
TLDファイルの読み込みと、呼び出し。

<%@taglib prefix="app" uri="/WEB-INF/apptaglib" %>


nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

-|【タグライブラリ】設定したFormBea.. ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。