`
huangfoxAgain
  • 浏览: 36960 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

[jsp自定义标签2] jsp自定义标签属性和标签体

阅读更多

jsp自定义标签——添加标签属性


通过标签属性控制标签展示的样式,这使其目的之一。
[jsp自定义标签1] jsp自定义标签的处理过程

中介绍了最基础的自定义标签的开发流程。在此基础上我们添加自定义标签的属性:

 

第一步:调整tld文件,为标签定义属性名称和相应的参数。

 

<tag>
    	<name>helloTag2</name>
    	<tag-class>com.fox.mytag.HelloMyTag2</tag-class>
    	<body-content>empty</body-content>
    	<attribute>
    		<name>fontColor</name>
    		<required>false</required>
    	</attribute>
    	<attribute>
    		<name>fontSize</name>
    		<required>false</required>
    	</attribute>
    </tag>

 

 

第二步:调整handler类,为属性字段添加set、get方法。

 

package com.fox.mytag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
 * 
 * @author huangfox
 * jsp自定义标签(标签属性)
 */
public class HelloMyTag2 extends TagSupport {
	
	private String fontSize = "14px" ;
	private String fontColor = "red" ;

	@Override
	public int doEndTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print("do End Tag ");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.doEndTag();
	}

	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print("<font color=\""+fontColor+"\" size=\""+fontSize+"\">hello!</font>");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}

	public String getFontSize() {
		return fontSize;
	}

	public void setFontSize(String fontSize) {
		this.fontSize = fontSize;
	}

	public String getFontColor() {
		return fontColor;
	}

	public void setFontColor(String fontColor) {
		this.fontColor = fontColor;
	}
	
	
	
}

 第三步:使用标签

 <f:helloTag2 fontColor="green" fontSize="30px"/>

 

------------------------------------------------------------------

 

自定义标签——添加标签体

要开发带标签体的标签,可实现BodyTag接口,也可从BodyTag接口的实现类BodyTagSupport继承,为简化开发,推荐从BodyTagSupport类继承开发。

 

编写标签对应的实现类时,需要重载BodyTagSupport类几个方法:

doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag(),

他们执行顺序如下:

doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()

doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY,如果返回EVAL_BODY_ INCLUDE则继续执行;如果返回SKIP_BODY则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行,而直接执行doEndTag()方法。

setBodyContent()方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY,EVAL_PAGE或SKIP_PAGE。如果返回EVAL_BODY_TAG则会再次设置标签体内容,直到返回SKIP_BODY;如果返回EVAL_PAGE则标签体执行完后会继续执行JSP页面中接下来的部分;如果返回SKIP_PAGE,则JSP页面的后续内容将不再执行。

 

第一步:修改tld文件

<tag>
    	<name>helloTag3</name>
    	<tag-class>com.fox.mytag.HelloMyTag3</tag-class>
    	<body-content>JSP</body-content>
    	<attribute>
    		<name>times</name>
    		<required>true</required>
    	</attribute>
    </tag>
 

第二步:调整handler class

package com.fox.mytag;

import java.io.IOException;

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

public class HelloMyTag3 extends BodyTagSupport   {

	private int times ;

	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print("标签开始");
			if(times<0)
				return SKIP_BODY ;
			else
				return EVAL_BODY_INCLUDE ; 
		} catch (IOException e) {
			e.printStackTrace();
			return SKIP_BODY ;
		}
	}

	//
	@Override
	public int doAfterBody() throws JspException {
//		JspWriter out = pageContext.getOut();
		if (times>0) {
			times--;
			return EVAL_BODY_AGAIN;
		}else
			return SKIP_BODY ;
	}


	@Override
	public int doEndTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print("标签结束");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return EVAL_PAGE ;
	}
	
	//
	public int getTimes() {
		return times;
	}

	public void setTimes(int times) {
		this.times = times;
	}
	
	
	
}
 

第三步:使用标签

<f:helloTag3 times="5">
     	这个就是标签体的内容。。。<br>
     </f:helloTag3>

 

 

 

 

 

 

分享到:
评论

相关推荐

    jsp 自定义标签实例

    在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的关键手段,它允许开发者创建可重用的组件,提高...在给定的实例中,我们可以看到一个简单的自定义标签的实现和使用过程,涵盖了JSP自定义标签的基本流程。

    JSP自定义标签学习笔记

    本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际应用。 一、概述 1.1 使用简单标签机制 JSP自定义标签提供了类似HTML标签的语法结构,通过自定义标签,开发者可以封装复杂的Java代码,使得页面...

    jsp 自定义标签的使用

    本教程将深入探讨JSP自定义标签的使用,同时结合实例介绍分页和下拉框绑定值的封装。 一、JSP自定义标签基础 1. **定义标签库(Tag Library)**:自定义标签首先需要定义一个TLD(Tag Library Descriptor)文件,它...

    JSP自定义标签动态属性支持

    这种动态属性支持使得JSP自定义标签更加的强大,能够在网页开发中提供更高的定制化程度和复用性。 以上就是关于“JSP自定义标签动态属性支持”的详细介绍。通过学习和实践这一技术,开发者可以更好地利用JSP自定义...

    jsp2.0 自定义标签和自定标签函数

    在Java Server Pages (JSP) 2.0版本中,自定义标签和自定义标签函数极大地扩展了JSP开发的灵活性和可重用性。这些特性允许开发者创建可复用的组件,使代码更加清晰,易于维护。本文将深入探讨JSP 2.0中的自定义标签...

    jsp自定义标签例子,能在Tomcat下直接运行

    总之,JSP自定义标签是提高JSP开发效率和代码复用性的重要工具,通过创建和使用自定义标签,我们可以构建出更加模块化、易于维护的Web应用程序。结合Tomcat这样的Servlet容器,可以快速地部署和测试这些自定义组件。

    jsp自定义标签库实现数据列表显示

    本文将详细讲解如何利用JSP自定义标签库实现数据列表的显示,以及涉及到的相关技术。 首先,`UserListTag.java` 是自定义标签的核心类,它继承了`javax.servlet.jsp.tagext.TagSupport` 或 `javax.servlet.jsp....

    jsp自定义标签报错的问题

    总的来说,理解和解决`Java.lang.NoClassDefFoundError: JspException`异常需要对JSP自定义标签的工作原理、项目结构以及打包过程有深入的了解。遵循正确的项目配置和打包步骤,能够有效地避免这类问题,保证自定义...

    JSP自定义标签实例与详细讲解

    本教程将深入探讨JSP自定义标签的实例与详细讲解。 一、JSP自定义标签概述 JSP自定义标签是类似于HTML标签的自定义组件,但它们提供了更强大的功能,可以封装Java代码,提供复杂的业务逻辑。自定义标签通过TLD(Tag...

    JSP自定义标签之自动完成框

    首先,我们要理解JSP自定义标签的概念。自定义标签是JSP的一种扩展机制,它允许开发者创建自己的标签库,以更加清晰和可维护的方式编写页面。自定义标签的实现通常涉及三个主要部分:标签库描述符(TLD)、标签处理...

    jsp自定义分页标签

    一、JSP自定义标签基础 JSP自定义标签是JSP技术的一部分,它允许开发者创建自己的标签,以扩展HTML或XML文档。这些自定义标签可以封装复杂的Java代码,使JSP页面更加清晰,易于理解和维护。自定义标签由两部分组成:...

    jsp自定义标签大全.rar

    本资源“jsp自定义标签大全.rar”提供了一套全面的JSP自定义标签的实例和指南,旨在帮助开发者深入理解和应用这一特性。 **JSP自定义标签的基本概念** JSP自定义标签不同于标准动作标签(如&lt;jsp:include&gt;或&lt;jsp:...

    jsp自定义标签编写的分页

    总结来说,通过学习和实践JSP自定义标签,我们可以构建高效、灵活的Web应用程序,比如这里的分页系统,它不仅简化了页面的开发,还增强了系统的扩展性和可维护性。在实际项目中,结合良好的设计原则和最佳实践,...

    JSP自定义标签之日期显示

    本篇将深入探讨“JSP自定义标签之日期显示”,以及如何通过自定义标签来优雅地处理日期格式化和展示。 首先,我们要理解JSP自定义标签的基本概念。自定义标签是JSP的一种扩展,它不是Java内置的标签,而是由开发者...

    jsp自定义标签库注意事项

    以下是对JSP自定义标签库的详细解释和使用注意事项: 1. **自定义标签开发步骤** - **编写JAVA类**:你需要创建一个Java类来实现特定的接口,如`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext...

    JSP自定义标签-标签属性_动力节点Java学院整理

    以下是关于JSP自定义标签及其属性的相关知识点: 1. 自定义标签的必要性:在JSP中,原生的标签(如, , &lt;jsp:include&gt;, &lt;jsp:forward&gt; 等)对于许多常见的任务来说已经足够,但在需要高度可定制化的场景下,自定义...

    jsp自定义嵌套标签

    ### jsp自定义嵌套标签:定义与使用详解 在JavaServer Pages(JSP)技术中,自定义标签是扩展其功能的一种强大手段。而自定义嵌套标签,则是在此基础上进一步提升灵活性和重用性的机制。本文将深入探讨自定义嵌套...

    JSP自定义Table标签demo

    总结起来,"JSP自定义Table标签demo"是一个教育性的示例,它演示了如何利用JSP自定义标签的灵活性和强大功能,来创建复杂且可复用的组件,如动态表格。通过学习和理解这个demo,开发者可以提升自己的JSP开发能力,...

    权威实用jsp自定义标签demo<select,checkbox,radio>

    综上所述,“权威实用jsp自定义标签demo,checkbox,radio&gt;”教程旨在帮助开发者掌握如何创建和使用与选择器相关的自定义标签,从而提升JSP开发的效率和质量。通过学习这个教程,你可以了解到自定义标签的核心概念、...

    掌握jsp自定义标签chm版

    本资料"掌握jsp自定义标签chm版"全面讲解了这一核心概念,旨在帮助开发者深入理解和熟练应用JSP自定义标签。 1. **自定义标签概述** JSP自定义标签是扩展JSP功能的一种方式,允许开发者创建自己的标签库,类似于...

Global site tag (gtag.js) - Google Analytics