如果看完了前两篇文章,那么想必想在基本已经可以搞出自己的定制标记库了。
在这里,再介绍一下怎么编写循环执行的定制标记
1.学习目标:编写一个实现了循环功能的定制标记。
2.编写标记处理类:
public class LoopTag extends TagSupport {
private static final long serialVersionUID = 1L;
private int times;
public void setTimes(int times){
this.times = times;
}
public int doStartTag(){
System.out.println("1");
return EVAL_BODY_INCLUDE;
}
public int doAfterBody(){
System.out.println("2");
if(times > 1){
times--;
return EVAL_BODY_AGAIN;
}else{
return SKIP_BODY;
}
}
LoopTag类继承了TagSupport类,定义了一个定制标记的属性times,它代表循环执行的次数。doAfterBody()方法只有当doStartTag()方法返回EVAL_BODY_INCLUDE时才被调用,因此在这里必须要重写doStartTag()方法,并且让该方法返回EVAL_BODY_INCLUDE。
在doAfterBody()方法中,每执行一次该方法,times值就减1,如果times值大于1,返回EVAL_BODY_AGAIN常量值,该返回值表示重复调用定制标记所包含的JSP页面内容;如果times值不大于1,返回SKIP_BODY常量值,该返回值表示不再调用定制标记所包含的JSP页面内容。
3.编写标记配置文件
util.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeeweb-jsptablibrary_2_1.xsd"
version ="2.1" >
<tlib-version>1.0</tlib-version>
<short-name>util</short-name>
<uri>http://crazy.com/taglib/util</uri>
<display-name>utilitytags</display-name>
<description>custom web utility tags</description>
<tag>
<name>Timer</name>
<tag-class>practice.TimerTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<name>dateTime</name>
<tag-class>practice.DateTimeTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>date</name>
<requried>false</requried>
<rtexprvalue>true</rtexprvalue>
<description>input date</description>
</attribute>
<attribute>
<name>pattern</name>
<requried>false</requried>
<rtexprvalue>false</rtexprvalue>
<description>date time format pattern</description>
</attribute>
</tag>
<tag>
<name>loop</name>
<tag-class>practice.LoopTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>times</name>
<requried>true</requried>
<rtexprvalue>true</rtexprvalue>
<description>loop times</description>
</attribute>
</tag>
</taglib>
4编写JSP页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="util" uri="http://crazy.com/taglib/util"%>
<html>
<head></head>
<body>
<util:loop times="10">
<util:dateTime pattern= "yyyy年MM月 HH:mm:ss"/><br/>
</util:loop>
</body>
</html>
部署一下 运行即可
分享到:
相关推荐
2. **TILES定制标记库** TILES是一个流行的JSP标签库,它提供了一套用于构建可复用和模块化的页面布局的定制标记。TILES的核心概念是定义和插入“tiles”,即页面的各个部分。 - **INSERT标记**:INSERT标记用于...
这篇博客文章“将定制标签库开发为标记文件”深入探讨了如何创建自己的标签库,并将其转化为标记文件,以便在JSP页面中方便地使用。以下是对这一主题的详细阐述: 首先,我们来理解什么是自定义标签库。在Java Web...
在传统的JSP开发中,开发者通常需要编写大量的Java脚本来处理页面逻辑,而Struts标记库则通过提供一系列定制化的标签来实现这一目的,从而提高了代码的可读性和可维护性。 Struts标记库分为几个主要部分: 1. **...
"定制标签库"这个标题暗示了我们将在讨论如何构建和使用这样的库,以便更好地控制和扩展HTML的标记能力。 标签库(Tag Library)在JavaServer Pages (JSP) 和其他类似的服务器端技术中扮演着重要角色。它将可重用的...
【描述】描述中的“基于Java的实例源码”表明这个AccuTag库是一个可编程的工具,开发者可以下载并研究其源代码,理解其工作原理,甚至根据自己的需求进行定制和扩展。增强现实标记跟踪是AR技术的关键组成部分,通过...
这个库的核心功能是识别和跟踪特定的图像标记,这些标记可以是二维条形码或者定制的图案,通过摄像头捕捉到这些标记后,AccuTag能够实时地将虚拟信息叠加到真实世界中,实现增强现实的效果。 1. **Java编程语言**:...
pytest是Python语言中广泛使用的第三方单元测试框架,相较于标准库中的unittest,pytest具有更为简洁的语法和更高的执行效率。它支持超过315种插件,使得测试工作更加灵活和可扩展。pytest不仅能够处理单元测试,还...
AccuTag是一款基于Java开发的增强现实(AR)标记跟踪软件库,专为开发者提供高效、精准的标记识别和跟踪功能。在AR技术中,标记是实现虚拟与现实世界交互的关键元素,它们可以是二维条形码、二维码或特定图案,通过...
- **扩展性**:通过添加新的标记库,可以轻松扩展JSP应用的功能。 通过学习和实践JSP自定义标记,开发者可以构建出更高效、更可维护的Web应用。同时,了解和掌握自定义标记也是成为熟练JSP开发者的必经之路。
Eclipse IDE是一个强大且可扩展的开发环境,而通过集成Python,我们可以创建适合自己需求的定制化版本。本文主要介绍如何利用Python和Eclipse的扩展框架EASE来实现这一目标,使得无需编写Java代码也能实现自定义功能...
3. **EXTTLD**:EXTTLD文件是EXTJS扩展标记库的描述文件,它定义了EXTJS JSP标签的属性、事件、默认值等。开发者可以通过EXTTLD文件定制EXTJS标签的行为,比如添加新的属性、扩展已有标签的功能。 4. **使用与集成*...
要使用libpandoc,开发者需要了解C语言,并且需要将库编译链接到自己的项目中。在完成编译后,可以通过libpandoc提供的API调用来执行转换任务,如读取输入文件、设置转换参数、选择输出格式以及保存转换后的结果。 ...
它于2002年6月发布了1.0版本,并由四个定制标记库和一对通用标记库验证器组成。 #### 二、JSTL 1.0 版本概述 JSTL 1.0版本主要包含了以下几个部分: - **核心标记库(Core Tag Library)**:提供了一组常用功能,...
首先,jQuery是JavaScript的一个库,它简化了JavaScript的DOM操作、事件处理、动画制作和Ajax交互。在库存日历插件中,jQuery被用来处理用户与日历元素的交互,如点击日历上的日期、滑动切换月份等。通过使用jQuery...
【标题】:“基于amplitudeJS开源HTML5网页音频库编写的音乐播放器” 【描述】:“html5开发” 在这个项目中,我们关注的是利用HTML5技术来开发一个音乐播放器,特别是通过集成amplitudeJS这一开源的HTML5网页音频...
JSTL 1.0主要由四个定制标记库和两个通用标记库验证器组成: 1. **Core标记库**:提供了用于数据管理、迭代、条件操作以及URL生成和操作的标签。这些标签帮助开发者管理页面内的数据流,控制内容的展示方式,以及...
9. **单元测试和集成测试**:对于资源库的测试,需要编写单元测试来验证各个组件的功能,以及集成测试确保不同组件协同工作。 通过以上分析,"测试swift资源库资源库"这个项目涵盖了Swift编程、iOS开发、地图服务...
"Flash-Md"可能是其中一个这样的库,可能提供了额外的功能,比如动画效果、交互性或者其他定制化选项,使得Markdown的渲染更加生动和吸引人。 在使用这个库之前,开发者首先需要解压"Flash-Md_main.zip",里面可能...
此外,Raneto还支持自定义主题,让你可以根据自己的品牌或喜好定制界面。 **四、Markdown的优点** 1. **简洁性**:Markdown语法简单直观,学习曲线低,使得任何人都能快速上手编写文档。 2. **可读性**:Markdown...