天天看點

J2EE中自定義标簽以及TagSupport和BodyTagSupport的用法

stringappendtags

package cn.xy.mytag;

import javax.servlet.jsp.jspexception;

import javax.servlet.jsp.tagext.tagsupport;

public class stringappendtags extends tagsupport

{

 private static final long serialversionuid = 1l;

 public stringappendtags()

 {

 }

 @override

 public int dostarttag() throws jspexception

  return 1;

}

stringappendtag

import javax.servlet.jsp.tagext.bodycontent;

import javax.servlet.jsp.tagext.bodytagsupport;

/**

 * 标簽一般執行順序:dostarttag()->顯示文字->doafterbodytag()->doendtag()->執行下面的網頁

 * @author xy

 *

 */

public class stringappendtag extends bodytagsupport

 /**

  * 值處理過後存儲在pagecontext中的鍵

  */

 private string key;

  * 标簽開始時調用該方法

  // 處理标簽體

  return eval_body_buffered;

  * 處理标簽體方法

 public int doafterbody() throws jspexception

  // 标簽體對象

  bodycontent body = getbodycontent();

  // 标簽體中字元串内容

  stringbuffer bodycontent = new stringbuffer(body.getstring());

  // 清除标簽體中内容

  body.clearbody();

  // 将處理過後的變量儲存在pagecontext對象

  this.pagecontext.setattribute(key, bodycontent.append("xy").tostring());

  // 結束對标簽體的處理

  return skip_body;

 public string getkey()

  return key;

 public void setkey(string key)

  this.key = key;

xy-tags.tld

<?xml version="1.0" encoding="utf-8"?>

 <tlib-version>1.0</tlib-version>

 <short-name>xy</short-name>

 <uri>/xy-tags</uri>

 <tag>

  <name>stringappenders</name>

  <tag-class>cn.xy.mytag.stringappendtags</tag-class>

  <body-content>jsp</body-content>

 </tag>

  <name>stringappender</name>

  <tag-class>cn.xy.mytag.stringappendtag</tag-class>

  <body-content>tagdependent</body-content>

  <variable>

   <name-from-attribute>key</name-from-attribute>

   <variable-class>java.lang.string</variable-class>

   <scope>at_begin</scope>

  </variable>

  <attribute>

   <name>key</name>

   <required>true</required>

  </attribute>

</taglib>

用法

<body>

 <x:stringappenders>

  <x:stringappender key="str1">i am </x:stringappender>

  <x:stringappender key="str2">i am </x:stringappender>

  <x:stringappender key="str3">i am </x:stringappender>

 </x:stringappenders>

 字元串添标簽的結果 ${ str1 } | ${pagescope.str1 } <br>

 字元串添标簽的結果 ${ str2 } | ${pagescope.str2 } <br>

 字元串添标簽的結果 ${ str3 } | ${pagescope.str3 } <br>

</body>

結果

字元串添标簽的結果 i am xy | i am xy