编写定制标签分为三个步骤:编写标签处理器、配置标签、使用标签。

1.标签处理器

标签处理器和标签是一一对应的关系

package com.oolong.utils.customtags;import java.io.IOException;
import java.util.List;import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;import com.oolong.personal.model.KLPointModel;
import com.oolong.utils.tree.TreeModel;public class ShowTreeTag extends SimpleTagSupport {private List<TreeModel<KLPointModel>> items;public void setItems(List<TreeModel<KLPointModel>> items) {this.items = items;}@Overridepublic void doTag() throws JspException, IOException {JspContext jspContext = getJspContext();JspWriter writer = jspContext.getOut();writer.print(generateHTML(items));}private String generateHTML(List<TreeModel<KLPointModel>> items) {StringBuilder sb = new StringBuilder();sb.append("<ul>");for(TreeModel<KLPointModel> treeModel : items) {sb.append("<li value='");sb.append(treeModel.getNode().getWid());sb.append("' >");sb.append(treeModel.getNode().getName());if (treeModel.getChildren() != null && treeModel.getChildren().size() > 0) {sb.append(generateHTML(treeModel.getChildren()));}sb.append("</li>");}sb.append("</ul>");return sb.toString();}}

对于需要在标签中使用的属性,此处给定这个属性getter和setter方法即可,程序在执行时,这些属性会被自动注入:

private List<TreeModel<KLPointModel>> items;public void setItems(List<TreeModel<KLPointModel>> items) {this.items = items;
}

2.配置标签
此处配置标签的名称、属性以及对应的标签处理器等

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd"version="2.1"><description>showTreeTag</description><tlib-version>1.0</tlib-version><short-name>ShowTreeTag</short-name><tag><name>showTreeTag</name><tag-class>com.oolong.utils.customtags.ShowTreeTag</tag-class><body-content>scriptless</body-content><attribute><name>items</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag>
</taglib>

配置标签对应的解析类:

<tag-class>com.oolong.utils.customtags.ShowTreeTag</tag-class>

配置标签属性可以介绍解析对象:

<rtexprvalue>true</rtexprvalue>

3.使用标签
这个标签的作用是迭代的显示一个树形结构

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib uri="/WEB-INF/ShowTreeTag.tld" prefix="Oolong"%>
<div class="col-sm-5 col-md-4 sidebar" id="treepanel"><div class="easy-tree"><c:forEach items="${pointTree}" var="item"><ul><li value="${item.domain.wid}">${item.domain.name}<c:if test="${item.children != null && fn:length(item.children) > 0}"><Oolong:showTreeTag items="${item.children}" /></c:if></li></ul></c:forEach>
</div></div>

在头部引入自定义标签的配置文件:

<%@ taglib uri="/WEB-INF/ShowTreeTag.tld" prefix="Oolong"%>

使用标签:

<Oolong:showTreeTag items="${item.children}" />

如果标签的属性值想要像这里这样接受对象作为参数,那就需要在配置标签时设置可以解析对象

转载于:https://www.cnblogs.com/weilu2/p/jsp_jstl_customing_tag.html

JSP——JSTL定制标签 - 递归标签显示属性结构相关推荐

  1. 让你认清楚JSP中的所有东西(java/JSP/EL/OGNL/JSTL/c标签/s标签/HTML/javascript/CSS)

    先来解释名词: java:jsp的基础,服务器端语言. javascript:运行在浏览器里的客户端脚本语言,目的是让网页更加生动活泼功能强大. HTML(Hypertext Markup Langu ...

  2. (forEach url out set catch 等)javaweb中JSTL的Core 核心标签库知识点

    JSTL 标签库的基本知识复习 导读{ 1]什么是 JSTL 标签库 ? [2]如何在我们的项目中使用JSTL ? [3]介绍Core 核心标签库 [3.1]URL标签 作用:  可以在JSP页面中构 ...

  3. JSP~~JSTL~~XML标签库

    XML 提供了非常灵活的方式来表示结构化的数据,可以创建自己的标记来识别数据,不仅仅人可以看懂,而且计算机也可以读懂.并且 XML 可以在不兼容的系统之间进行数据的交换,所以 XML 必定将称为最普遍 ...

  4. JSP JSTL标签库基本使用

    下载如下库,把下面两个jar: 拷贝到如下目录: 把如下tld文件, 拷贝到如下目录: 做一个jsp: <%@ page language="java" contentTyp ...

  5. JSP JSTL标签

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  6. jsp: jstl标签库 uri标签

    与 URL 相关的标签主要是用来将其他文件包含进来,或者提供页面之间的重定位以及 URL 地址的 生成.参数的输出等等.一般包括如下几个标签 <c:import>标签:与传统 JSP 页面 ...

  7. 【郭林专刊】JSP中JSTL提供的函数标签EL表达式操作字符串的方法

    首先在jsp页面导入标签 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&qu ...

  8. MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白

    MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白,症状如下: 解决方案如下:

  9. JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构

    JSTL标准标签库简介与环境搭建 EL表达式与EL隐式对象 out标签 set标签 remove标签 catch标签 if标签 choose.when.otherwise配合标签 foreach标签 ...

最新文章

  1. C#实现简体繁体转换代码示例
  2. C语言 vprintf 函数和 printf 函数区别 - C语言零基础入门教程
  3. 高等组合学笔记(十四):Lagrange反演公式
  4. 2020年Java讲课笔记目录
  5. Linux中用yum安装MySQL方法
  6. linux console 下载 jdk
  7. 2022 年移动应用开发终极指南
  8. matlab电力模块,基于MATLAB中电力系统模块集(PSB的电力系统仿真研究
  9. java电商项目简历_一文解析从写简历,到面试、谈薪酬技巧和防坑指南
  10. DOTCPP:有关1125心得
  11. 使用pytorch进行深度学习网络模型训练,实现车型识别
  12. 对Word文档中的指定内容进行替换
  13. opencv获取灰度图像的像素值
  14. Linux使用shell定时任务实现ffmpeg视频转码和截图
  15. codeforces 711 C. Coloring Trees (dp)
  16. 【SpringCloud】微服务笔记
  17. IOT网关开发受难记-(一) 2022/05/13
  18. python求解一阶常微分方程
  19. Calculate函数内外筛选器的交互过程
  20. 关于跨区的3种解决办法

热门文章

  1. 双重检查锁与单例模式
  2. 编程珠玑之第三章习题8
  3. linux查看硬盘信息命令
  4. 【聚水潭SDK使用说明】
  5. SAP-ABAP-SO23邮箱地址如何获取
  6. 第18.6.1章 JDK9的新特性—Java的REPL工具: jShell命令
  7. axios 官方指南翻译
  8. 小姐姐太强了,动图展示 10 大 Git 命令,不会都难
  9. Swift - 判等
  10. 芝诺数解|【二】风禾尽起,且住为佳——重庆租房