Java-カスタムラベル


カスタムラベルはプロジェクトで非常に役立ち、使用も簡単です.作成と使用手順を見てみましょう.
一、クラスを作成してBodyTagSupportを継承する

package com.main.movie.tag;

import java.io.IOException;

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

/**
 *     
 * @author main
 *
 */
@SuppressWarnings("serial")
public class UIPageTag extends BodyTagSupport {
	private int page;
	
	public int getPage() {
		return page;
	}
	public void setPage(int page) {
		this.page = page;
	}

	public int doStartTag() throws JspException {
		StringBuffer html = new StringBuffer();
		html.append("<a href='#' onclick='Tabs.changePage(\"admin/admin_adminManager?page=" + (page+1) + "\")'>   </a>");
		try {
			System.out.println(html.toString());
			pageContext.getOut().print(html.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return EVAL_PAGE;
	}
	
}

二、WEB-INFフォルダの下にtldsフォルダを作成し、tldファイルを作成する(接尾辞は.tldで、フォーマットは実はxmlである)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
 <tlib-version>1.0</tlib-version>
 <jsp-version>1.2</jsp-version>
 <short-name>movie-admin</short-name>
  <tag>
 	<name>uiPage</name>
 	<tag-class>com.main.movie.tag.UIPageTag</tag-class>
 	<attribute>
 		<name>page</name>
 		<required>true</required>
 	</attribute>
 </tag>
</taglib>

三、web.xmlの構成

<jsp-config>
	<taglib>
		<taglib-uri>/movie-admin</taglib-uri>
		<taglib-location>/WEB-INF/tlds/movie-admin.tld</taglib-location>
	</taglib>
</jsp-config>

四、JSPインタフェースにラベルを導入する

<%@ taglib uri="/WEB-INF/tlds/movie-admin.tld" prefix="family" %>

五、ラベルにEL式を支持させる
EL式をサポートする必要があるプロパティを変更するには、次のようにします.

public void setValue(Object value)throws JspException {
  this.value = ExpressionEvaluatorManager.evaluate(
            "value", value.toString(), Object.class, this, pageContext);  
 }

属性の説明:
最初にtagを表す名前は、el式の取得エラー時に使用されます.一般的には属性名と同じです.
2番目の要求文字列は、通常、入力オブジェクトのtoStringメソッドを簡単に呼び出します.
3つ目はクラスで、通常はObject.classを使用します.
4つ目はthisでいいです.
5つ目はpageContext変数です.
注意:1、tldファイルのラベル属性のrtexprvalueはtrueに設定します.2、ついでにJSTLに必要なバッグがあるかどうかをチェックします.