JSP页面tdl自定义标签的做法
来源:互联网 发布:阿里云字体图标 编辑:程序博客网 时间:2024/04/19 01:48
思路:
首先tdl自定义标签就是比如类似input、div、ul、li之类的标签,只是名字自己来定义,但实际上要在页面上看到效果还是需要些html代码,只是在页面上只需要写自己标签就可以代表一部分html代码而已,相当于类似模板一样,但又可以从前端传参的进入这个模板变成动态模板返回到前端生成页面。写这个模板的用处主要是做一些统一的模板,比如:多选框、下拉选择、图片上传、图片查看等固定模板,只需要在传入的时候添加各种参数,比如ID、名称等就可以达到很好的利用,而且前端代码也很美观,用起来很方便,如果有需要保密的的话可以打包成jar包使用,只是这样就增加了维护的难度。
第一步:创建后缀为.tld文件
在web-inf下面编写一个XXX.tld文件和web.xml同级(XXX代表名字自定义),为什么要同级,我猜测应该是项目编译的时候会向自动读取web.xml一样读取easyui.tld吧,因为创建好了之后不需要在什么地方配置或加载这个文件,直接就可以用了。这里为了方便我取得名字为:easyui.tld
第二步:编写.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>dswl</short-name> <uri>dswl</uri> <display-name>"自定义标签"</display-name> <tag> <name>DropBox</name> <tag-class>com.ssm.web.core.tld.DropBoxTag</tag-class> <body-content>JSP</body-content> <description>基础表单选按钮</description> <attribute> <name>identification</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <description>标识</description> </attribute> <attribute> <name>serialNumber</name> <required>false</required> <rtexprvalue>true</rtexprvalue> <description>序号</description> </attribute> </tag></taglib>
第三步:com.ssm.web.core.tld.DropBoxTag内容
这个类是自定义的类,可以写自己想写的一切代码,比如逻辑处理、html代码的拼接等。
注意:如果复制这个代码在引入包的地方或继承类的时候会出错误,请看最后的注意事项。
图片解释:
代码:
package com.ssm.web.core.tld;import javax.servlet.jsp.JspTagException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;import java.io.IOException;/** * Created by yy on 2016/8/9. */public class DropBoxTag extends TagSupport{ private static final long serialVersionUID = 1L; private String identification; private String serialNumber; public int doEndTag() throws JspTagException { System.out.print(identification+serialNumber); JspWriter writer= this.pageContext.getOut(); StringBuffer content = new StringBuffer(); content.append("<input type='text' value='测试' />"); try { writer.print(content.toString()); } catch (IOException e) { e.printStackTrace(); } return 6; } public String getIdentification() { return identification; } public void setIdentification(String identification) { this.identification = identification; } public String getSerialNumber() { return serialNumber; } public void setSerialNumber(String serialNumber) { this.serialNumber = serialNumber; }}
第四步:前端页面的引用
(1)首先需要把这个自定义的标签引用到jsp页面中
<%@ taglib uri="dswl" prefix="ds"%>
解释: 比如命名ds 使用方法:<ds:XXXXX></ds:XXXXX> 比如命名yy 使用方法:<yy:XXXXX></yy:XXXXX> Uri 代表tdl文件中<uri></uri>标签的名称 比如命名dswl tdl文件中<uri>dswl</uri> 比如命名yyyy tdl文件中<uri>yyyy</uri>
(2)使用标签
<ds:DropBox identification="sex" serialNumber="serialNumber"></ds:DropBox>
解释:ds:是 prefix中获得DropBox:是tdl文件中<tag><name>DropBox</name></tag>name的名称Identification:是tdl文件<attribute><name>identification</name></attribute>name的名称,如果是true就是代表必须要的这个属性,如果false就是可以有也可以没有serialNumber:是tdl文件<attribute><name>serialNumber</name></attribute>name的名称,如果是true就是代表必须要的这个属性,如果false就是可以有也可以没有属性后面的 =”” 是要传入的值
第五步:注意事项
一般到这里就成功了,可以试试结果了,但有可能也会出现一些意外。
因为com.ssm.web.core.tld.DropBoxTag这个类继承了TagSupport,用到了jar包的一些东西,用到的是servlet-api.jar和jsp-api-2.0.jar,需要引入这2个jar包,但是这2个jar包在tomcat的lib目录下也有这2个包,这样就会起冲突,但项目又用到了这2个包,不能直接删除,这个时候需要使用下面的方法进行解决:
描述:
1·右击项目名称—-properties—-java Build Path—-Add Library—myeclipse Libraries—-javaEE5 Libraries复选框选中—-finish
2·删掉WEB-INF下的jsp-api,servlet-api重新部署
3·成功
图示:
这里没有java EE5 Libraries是因为我已经导入了,如果没导入就会有。导入这个的意思是这里面会有这个2个jar包,并且不会与tomcat相冲突。
- JSP页面tdl自定义标签的做法
- jsp自定义标签处理器类----带属性标签的做法
- JSP页面中的自定义标签
- JSP页面中的自定义标签
- 自定义jsp页面标签过程
- jsp页面自定义标签属性
- 使用自定义标签实现JSP页面和代码的分离
- 使用自定义标签实现JSP页面和代码的分离
- JSP自定义标签的页面解析生命周期及线程安全
- 使用JSP自定义标签做页面片段的缓存
- 自定义jsp标签实现页面元素的权限控制
- JSP的自定义标签
- JSP的自定义标签
- jsp的自定义标签
- jsp的自定义标签
- jsp的自定义标签
- 在JSP页面中自定义标签
- 看jstl标签做个类似 的 自定义jsp 页面标签
- Ubuntu下安装Anaconda
- DWZ使用自定义图标的方法
- myeclipse的svn: E175002: java.lang.RuntimeException: Could not generate DH keypair
- SQL语句执行计划
- 一句话概括下spring框架及spring cloud框架主要组件
- JSP页面tdl自定义标签的做法
- IEEE 802.15.4协议完整中文版 - 5.1.2.4 - 5.1.2.5
- ubantu16.04在Firefox上安装Adobe Flash Player
- android 动态权限添加 ,你不得不学
- redis集群安装配置数据迁移和客户端(java方向)第三节,客户端
- 《Android音频焦点机制深入理解》
- OpenWrt基于HAProxy的透明代理负载均衡和高可用部署
- 安卓打包apk,iOS打包ipa
- VxWorks的Socket通信(二)