当前位置: 首页 > news >正文

自定义标签例子

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

WEB-INF下新建xxx.tld文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" 
       "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>
	 <tlibversion>1.0</tlibversion>
	 <jspversion>1.0</jspversion>
	 <shortname>tiles</shortname>
	<uri>http://jakarta.apache.org/struts/tags-tiles</uri>
	
	<!-- 有属性无标签体 -->
  <tag>
     <!-- 标签名称-->
     <name>date</name>
     <!-- 标签对应的处理类-->
     <tagclass>com.clouds.util.tag.DateTag</tagclass>
     <!-- 标签体内容,没有标签体则设为empty-->
     <bodycontent>jsp</bodycontent>
     <!-- 标签的属性声明-->
     <attribute>  
            <name>value</name>  
            <required>true</required>  
            <rtexprvalue>true</rtexprvalue>  
     </attribute> 
     <attribute>  
            <name>type</name>  
            <required>false</required>  
            <rtexprvalue>true</rtexprvalue>  
     </attribute> 
     
     </tag>
  <tag>
     <!-- 标签名称-->
     <name>delivery</name>
     <!-- 标签对应的处理类-->
     <tagclass>com.clouds.util.tag.DeliveryTag</tagclass>
     <!-- 标签体内容,没有标签体则设为empty-->
     <bodycontent>jsp</bodycontent>
     <!-- 标签的属性声明-->
     <attribute>  
            <name>value</name>  
            <required>true</required>  
            <rtexprvalue>true</rtexprvalue>  
     </attribute> 
   </tag>
  <tag>
     <!-- 标签名称-->
     <name>product</name>
     <!-- 标签对应的处理类-->
     <tagclass>com.clouds.util.tag.ProductsTag</tagclass>
     <!-- 标签体内容,没有标签体则设为empty-->
     <bodycontent>jsp</bodycontent>
     <!-- 标签的属性声明-->
     <attribute>  
            <name>value</name>  
            <required>true</required>  
            <rtexprvalue>true</rtexprvalue>  
     </attribute> 
   </tag>

  
</taglib>

 新建对应的类:

/**  

* @Title: DateTag.java
* @Package com.clouds.util
* @Description: TODO(用一句话描述该文件做什么)
* @author 周张豹
* @date 2012-9-11 下午05:20:46
* @version V1.0  
*/
package com.clouds.util.tag;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * @ClassName: DateTag
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author 周张豹
 * @date 2012-9-11 下午05:20:46
 *
 */

public class DateTag extends TagSupport {

    private static final long serialVersionUID = 6464168398214506236L;
    
    private String value;
    private String type;
    
    @Override
    public int doStartTag() throws JspException {
        String vv = ""+value;
        if (value != null && !"".equals(value)) {
        	Long a = Long.valueOf(value);
    		Long aa = (Long) a * 1000;
    		Date b = new Date(aa);
    		if (type == null || "".equals(type)) {
    			type = "yyyy-MM-dd HH:MM:ss";
    		}
            SimpleDateFormat sdf= new SimpleDateFormat(type);
            String date = sdf.format(b);
            try {
                pageContext.getOut().write(date+"");
            } catch (IOException e) {
                e.printStackTrace();
            }
		}
        return super.doStartTag();
    }
    public static void main(String[] args) throws JspException {
    	DateTag tag = new DateTag();
		tag.doStartTag();
	}
    public void setValue(String value) {
        this.value = value;
    }
    
    /**
	 * @return 获取 type 的值
	 */
	public String getType() {
		return type;
	}


	/**
	 * @param 设置  type 的值
	 */
	public void setType(String type) {
		this.type = type;
	}
}
页面上调用如下:
<common:data value="" type=""></common:data>

转载于:https://my.oschina.net/HuifengWang/blog/232941

相关文章:

  • javaBean与map类型相互转换
  • mysql错误代码和消息对照表--转载
  • Varnish调优手记
  • IOS文件操作
  • 本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善(转)...
  • linux驱动编译常见错误记录
  • IT项目中存储设备的选型
  • 使用ASP.Net WebAPI构建REST服务(五)——客户端
  • CentOS Mahout部署
  • 软件设计的思想与哲学
  • VC中利用多线程技术实现线程之间的通信
  • 苹果平台上的媒体流播放技术HLS
  • 我的另外一个博客
  • Mod_Python中文文档
  • Radmin远程连接TMG
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • gops —— Go 程序诊断分析工具
  • iOS | NSProxy
  • js
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Otto开发初探——微服务依赖管理新利器
  • SpringBoot几种定时任务的实现方式
  • swift基础之_对象 实例方法 对象方法。
  • 百度小程序遇到的问题
  • 关于使用markdown的方法(引自CSDN教程)
  • 欢迎参加第二届中国游戏开发者大会
  • 技术发展面试
  • 通信类
  • 微服务框架lagom
  • 小而合理的前端理论:rscss和rsjs
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #QT(智能家居界面-界面切换)
  • (8)STL算法之替换
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (接口封装)
  • (力扣题库)跳跃游戏II(c++)
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (七)理解angular中的module和injector,即依赖注入
  • (三)mysql_MYSQL(三)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET下ASPX编程的几个小问题
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)