博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
J2EE中自定义标签以及TagSupport和BodyTagSupport的用法
阅读量:6078 次
发布时间:2019-06-20

本文共 2524 字,大约阅读时间需要 8 分钟。

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

 

package cn.xy.myTag;

import javax.servlet.jsp.JspException;

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

/**

 * 标签一般执行顺序:doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页
 * @author xy
 * 
 */
public class StringAppendTag extends BodyTagSupport
{
 private static final long serialVersionUID = 1L;

 /**

  * 值处理过后存储在pageContext中的键
  */
 private String key;

 /**

  * 标签开始时调用该方法
  */
 public int doStartTag() throws JspException
 {
  // 处理标签体
  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"?>

<taglib version="2.1" xmlns=""
 xmlns:xsi=""
 xsi:schemaLocation=" web-jsptaglibrary_2_1.xsd">
 <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>
 <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>
 </tag>
</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 

字符串添标签的结果 I am xy | I am xy 
字符串添标签的结果 I am xy | I am xy

本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1010359如需转载请自行联系原作者

woshixuye111

你可能感兴趣的文章
基于springCloud的分布式架构体系
查看>>
使用lombok编写优雅的Bean对象
查看>>
hive的常见函数
查看>>
选对了行业,少奋斗十年,你选对了吗?
查看>>
mongodb
查看>>
Web前端自学之路学习路线,web前端开发网站
查看>>
[Java] 炼数深入浅出Spring企业框架实战
查看>>
日志文件怎么玩——了解一下Python中的logging模块
查看>>
linux高级数据存储
查看>>
C++简单单向链表实现
查看>>
使用Tenorshare UltData for Mac如何从iCloud备份还原数据
查看>>
区块链+人工智能,如何颠覆我们已知生活
查看>>
完全恢复执行和留在rollup例子
查看>>
number 待做截取处理的数值
查看>>
Oracle教程之Oracle管理索引(七)--Oracle显示索引信息
查看>>
SSD Cloud Hosting–Linode-Mysql数据库的安装与配置
查看>>
Mac下安装PIL库
查看>>
新技术让Wi-Fi网络像手机一样无缝漫游
查看>>
JavaWeb中如何自己创建一个servlet
查看>>
howto install Oracle VirtualBox Guest Additions on Fedora, CentOS and Red Hat (RHEL).
查看>>