当需要处理标签体时,标签处理类应继承BodyTagSupport:
一、需求分析:
数据展示是常有长字符串会影响页面显示效果,需要对其按一定和长度和形式进行省略。来控制显示效果。
二、标签处理类:
public class StringOmitTag extends BodyTagSupport{
private static final long serialVersionUID = -1385010302157701800L;
/**
*
*/
private int maxLength; //限定的最长字数
private String suffix; //后缀
private String value; //要处理的值
public int getMaxLength() {
return maxLength;
}
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
public String getSuffix() {
return suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public int doAfterBody() throws JspException {
if(null==value){
value=bodyContent.getString();
}
return SKIP_BODY;
}
@Override
public int doEndTag() throws JspException {
if(null==value){
value="";
}
//JspWriter out = super.getBodyContent().getEnclosingWriter();
JspWriter out = pageContext.getOut();
try {
if(value.length()>maxLength){
value=value.substring(0, maxLength);
if(suffix!=null && !"".equals(suffix)){
value+=suffix;
}
}
out.print(value);
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
}
三、标签描述文件:
将下面的内容加入tld文件中。以增加web应用对上面的标签类的支持
<tag>
<name>StringOmit</name>
<tag-class>cn.lvlf.framework.tags.StringOmitTag</tag-class>
<body-content>jsp</body-content>
<attribute>
<name>maxLength</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>int</type>
</attribute>
<attribute>
<name>suffix</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
四、标签应用:
在jsp头加上:
<%@ taglib uri="/WEB-INF/tld/mytags.tld" prefix="my" %>
应用代码:
<my:StringOmit maxLength="5" suffix="..." value="abcdefghijklmnopqrstuvwxyz"/>
当不指定value值,标签将处理标签体内的内容:
<my:StringOmit maxLength="5" suffix="..."/>
<my:StringOmit maxLength="5" suffix="..."></my:StringOmit>
<my:StringOmit maxLength="5" suffix="..." value="abcdefgasdfadsf"/><br>
<my:StringOmit maxLength="5" suffix="..." value="41234123412341"></my:StringOmit><br>
<my:StringOmit maxLength="5" suffix="...">fasdfasdfasdfasdfa</my:StringOmit>
五、备注
1、在这里只需实现BodyTagSupport类的实现BodyTagSupport类的doAfferBody()和doEndTag()方法即可。
2、value属性和标签体内容都不是必须的。所以在jsp中可能灵活运用。当设置value属性时。取value输出。没有value时。取标签体内容输出。二者都没有也不会报错
3、当没有标签体时。doAfterBody()是不会被执行的。所以最终要在doEndTag()方法中对最终输出作统一处理。
分享到:
相关推荐
【jsp自定义标签介绍与操作实例】 在Java服务器页面(JSP)技术中,自定义标签允许开发者创建可重用的代码片段,提高代码的可维护性和可读性。自定义标签通过扩展JSP标准标签库(JSTL)的能力,使用户能够根据特定...
**JSTL自定义标签实例解析** JavaServer Pages Standard Tag Library (JSTL) 是一套标准的标签库,用于简化JSP开发。JSTL允许开发者使用预定义的标签来处理常见任务,如迭代、条件判断、XML处理等。本文将深入讲解...
### jsp自定义嵌套标签:定义与使用详解 在JavaServer Pages(JSP)技术中,自定义标签是扩展其功能的一种强大手段。而自定义嵌套标签,则是在此基础上进一步提升灵活性和重用性的机制。本文将深入探讨自定义嵌套...
本篇将详细介绍如何创建JSP自定义标签。 首先,了解自定义标签的基本结构。一个自定义标签其实是一个Java类,这个类需要继承自`TagSupport`或`BodyTagSupport`。这两个类由JSP容器提供,它们包含处理JSP页面与...
**JSP自定义标签开发手册** 在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的重要手段,它允许开发者创建可重用、可封装的组件,提升代码的可读性和可维护性。本手册将深入探讨JSP自定义标签的开发流程...
### jsp自定义标签库知识点详解 #### 一、什么是jsp自定义标签? 1. **概念**:JSP 自定义标签是一种将复杂的功能封装成一个简单的标签的方式,它允许开发者创建可重用的代码组件,这些组件可以在 JSP 页面中像...
JSP自定义标签是JavaServer Pages(JSP)技术中的一种扩展机制,允许开发者创建可重用的自定义标签库,以提高代码的可读性和复用性。这些标签类似于HTML标签,但它们可以封装复杂的Java逻辑,提供更灵活的页面构建...
通过深入学习JSP自定义标签的生命周期和`BodyTagSupport`类提供的方法,开发者能够更好地理解和解决问题,从而编写出高效、可靠的自定义标签。如果你在实现过程中遇到具体的错误或疑惑,可以参考`JSP自定义标签各...
Java自定义标签是基于Java类的,这些类实现了`javax.servlet.jsp.tagext.Tag`或`javax.servlet.jsp.tagext.SimpleTag`接口。`Tag`接口是经典且必须实现的接口,它定义了标签生命周期中的一系列方法,如`doStartTag...
【JSP自定义标签】是JavaServer Pages (JSP) 技术中的一种高级特性,它允许开发者创建自己的标签库,以实现复用性强、可维护性高的代码。这一特性在JSP 1.1版本之后被引入,极大地提升了开发效率。 ### 1. 案例分析...
`TagSupport`和`BodyTagSupport`是这两个接口的实现类,它们提供了默认的行为和属性管理,简化了自定义标签的开发。`BodyTag`是`IterationTag`的一个子接口,允许标签包含内容(Body)。 在JSP规范中,自定义标签比...
Java自定义标签是JSP开发中的一个重要特性,它允许开发者扩展JSP页面的功能,通过创建自己的标签库来封装复杂逻辑或常见操作。本教程将详细讲解如何创建和使用自定义标签。 首先,JSP中的标签库是实现自定义功能的...
当JSP容器遇到自定义标签时,会根据标签库描述符(TLD)找到对应的标签处理程序实例,然后调用其方法来执行标签的功能。 2. **标签库**: 一组相关的自定义标签和它们的处理程序构成了一个标签库。导入标签库通常...
3. JSP 页面中执行到自定义标签,首先实例化自定义标签的标签处理器类。 4. 调用 setPageContext 方法,把页面的 pageContext 对象传递给标签处理器类。 5. 看标签是否有父标签,如果有父标签,则把父标签作为一个...
文章中提到的实例,通过在自定义标签中使用简单的列表数据来模拟从数据库获取数据的过程。在实际应用中,这些数据很可能是从数据库查询得到的。自定义标签隐藏了数据获取的复杂性,只向JSP页面暴露了简单的接口,...
1. 创建标签实例,并通过`setPageContext()`方法设置页面上下文,提供对JSP环境的访问。 2. 使用`setParent()`方法设置父标签,如果没有嵌套关系,则设置为null。 3. 设置标签属性,这些属性在标签库描述文件(TLD)中...
Java Web开发是构建基于Web的应用程序的关键技术,涵盖了多种组件和技术,如Servlets、JSP、过滤器、监听器和自定义标签等。本篇主要关注的是Java Web开发中的过滤器、监听器和自定义标签。 1. **过滤器(Filter)*...
此外,`TagSupport`和`BodyTagSupport`等抽象类为开发自定义标签提供了便利,简化了实现过程。 再者,JSP 2.1引入了页面指令(Page Directives),如`@page`, `@import`, `@include`, `@taglib`等,这些指令允许...
* page:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例。 * exception:处理JSP文件执行时发生的错误和异常。 6.JSP乱码解决方案 JSP乱码解决方案有多种,例如在JSP页面显示乱码、表单提交中文时出现...