自己定义标签主要包含三个步骤:

  • 1、编写java类,继承TagSupport类。

  • 2、创建tld文件,影射标签名和标签的java类。

  • 3、jsp页面引入tld。

样例:自己定义下拉框标签

假设页面上有下拉选择框,通常最好的解决方法是使用数据字典。由于有可能多个页面

使用同一个下拉框。便于后台统一维护。

自己定义Tag类

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport; public class DictionaryOptionTaget extends TagSupport {
private static final long serialVersionUID = 1L;
private String index; // 字段索引 ,页面上通过标签属性传回来的值 @SuppressWarnings("unchecked")
@Override
public int doEndTag() throws JspException {
JspWriter jspw = this.pageContext.getOut(); StringBuffer options = new StringBuffer(); /**
* 须要查询数据库 字段索引为SEX的option内容,这里是写死
*/
if ("SEX".equals(index)) {
options.append("<option value=''>-请选择-</option>");
options.append("<option value='1'>男</option>");
options.append("<option value='0'>女</option>");
} try {
jspw.println(options); //输出
} catch (IOException e) {
e.printStackTrace();
} return 0;
} @Override
public int doStartTag() throws JspException {
return 0;
} public String getIndex() {
return index;
} public void setIndex(String index) {
this.index = index;
} }

定义tld

<?xml version="1.0" encoding="UTF-8"?

>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>tagSample</short-name>
<uri>/hellotag</uri> <tag><!-- 从数据字典检出一个option列表 -->
<name>OptionDictionary</name>
<tag-class>
com.itmyhome.DictionaryOptionTaget
</tag-class>
<body-content>empty</body-content>
<attribute>
<name>index</name><!-- 字段索引名 -->
<required>true</required><!-- 是否必填 -->
<rtexprvalue>false</rtexprvalue><!-- 能否够以${}方式传值 -->
</attribute>
</tag> </taglib>

须要注意的是:<rtexprvalue>true</rtexprvalue> 时候,能够使用JSP表达式

表示该自己定义标签的属性值能够使用 ${} 方式动态传值。

使用自己定义的标签

<%@ taglib uri="/WEB-TAG/platForm.tld" prefix="PF"%>
<select>
<PF:OptionDictionary index="SEX"/>
</select>

页面输出:

源代码:download

作者:itmyhome

最新文章

  1. IOS 推送-配置与代码编写
  2. 新版PHP 7效能實測:Drupal 7能快70%,碎形計算大勝Ruby和Python
  3. 基于SpringBoot项目的https
  4. Winform在一个窗体获取其他窗体的值
  5. (C#) 设定时间格式
  6. 【跟我一起学Python吧】Python解释执行原理
  7. 阿里大鱼simplexmlelement object 取值PHP
  8. php中json_encode中文编码问题
  9. Cocos2d-x学习笔记(1)
  10. swift UI特殊培训38 与滚动码ScrollView
  11. python+selenium+Eclipse安装
  12. 个人作业3—个人总结(Alpha阶段)
  13. stm32开发之使用Keil MDK以及标准外设库创建STM32工程
  14. fuchsia 内核
  15. 第四篇:记录相关操作 SQL逻辑查询语句执行顺序
  16. C# 使用 Proxy 代理请求资源
  17. 设置GRUB密码以防止单用户模式下root密码被恶意更改
  18. JS代码把JSON字符串转换为对象,计算对象的长度并把它转换为数字类型,把转换的值相加减
  19. Configuring Ubuntu for deep learning with Python in Ubuntu16.04
  20. winform计算文本的所占的像素长度

热门文章

  1. Struts2之一 初体验
  2. [转]Wote用python语言写的imgHash.py
  3. enc28j60网卡驱动模块添加进linux内核,Kconfig,Makefile配置过程
  4. win32绘图基础
  5. html——a标签中target属性
  6. JavaScript的基础数据类型和表达式
  7. JavaFX桌面应用开发-Button(按钮)与事件
  8. 计蒜客 成绩统计 (Hash表)
  9. Capture the Flag ZOJ - 3879(模拟题)
  10. 数据类型与变量(Python学习笔记01)