文档章节

自定义标签

萧小蚁
 萧小蚁
发布于 2015/06/09 21:22
字数 374
阅读 7
收藏 0
点赞 0
评论 0
package model;

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

/**
 * 
 * @author sally
 * s:if test
 */
public class IFTag extends TagSupport {
private boolean test;
	
	@Override
	public int doAfterBody() throws JspException {
		// TODO Auto-generated method stub
		return SKIP_BODY;
	}

	@Override
	public int doEndTag() throws JspException {
		// TODO Auto-generated method stub
		return EVAL_PAGE;
	}

	/**
	 * 遇到自定义开始标签时,会自动回调doStartTag方法
	 */
	@Override
	public int doStartTag() throws JspException {
		// TODO Auto-generated method stub
		if(test){
			return EVAL_BODY_INCLUDE;
		}else{
			return SKIP_BODY;
		}
	}
	/**
	 * 
	 * @param test the test to set
	 * 通过set方法,给属性赋值
	 */
	public void setTest(boolean test){
		this.test=test;
	}

}
package model;

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

public class LoopTag extends TagSupport {

	private int count;
	public LoopTag(){
		System.out.println("创建对象");
	}
	@Override
	public int doAfterBody() throws JspException {
		System.out.println("执行到了doAfterBody");
		--count;
		if(count>0){
			return EVAL_BODY_AGAIN;
		}else{
			return SKIP_BODY;
		}
	}

	@Override
	public int doEndTag() throws JspException {
		// TODO Auto-generated method stub
		return EVAL_PAGE;
	}

	@Override
	public int doStartTag() throws JspException {
		if(count>0){
			return EVAL_BODY_INCLUDE;
		}else{
			return SKIP_BODY;
		}
	}
	/**
	 * 
	 * @param count the count to set
	 */
	public void setCount(int count){
		System.out.println("给count赋值");
		this.count=count;
	}

}
<?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/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
   <description>JSP custom tag</description>
  <display-name>jsp custom</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>s</short-name>
  <uri>http://www.deruntechonology.com</uri>
  
  	<tag>
  		<description>s:if</description>
  		<name>if</name>
  		<tag-class>model.IFTag</tag-class>
  		<body-content>JSP</body-content>
  		<attribute>
  			<name>test</name>
  			<required>true</required>
  			<rtexprvalue>true</rtexprvalue>
  		</attribute>
  	</tag>
  	<tag>
  		<description>s:loop</description>
  		<name>loop</name>
  		<tag-class>model.LoopTag</tag-class>
  		<body-content>JSP</body-content>
  		<attribute>
  			<name>count</name>
  			<required>true</required>
  			<rtexprvalue>true</rtexprvalue>
  		</attribute>
  	</tag>
  </taglib>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.deruntechonology.com" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>JSP 自定义标签 </title>
	
  </head>
  
  <body>
  <%
  	request.setAttribute("c", 2);
   %>
    <s:if test="${5>4 }">真的</s:if>
    
    <s:loop count="${c }">
    	hello
    </s:loop>
    <h3>标题</h3>
  </body>
</html>


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

粉丝 98
博文 279
码字总数 192339
作品 0
海淀
程序员
Spring自定义标签解析与实现

在Spring Bean注册解析(一)和Spring Bean注册解析(二)中我们讲到,Spring在解析xml文件中的标签的时候会区分当前的标签是四种基本标签(import、alias、bean和beans)还是自定义标签,如果是...

张旭峰
05/20
0
0
JSP自定义标签基础

自定义标签:就是程序员定义的一宗好难过JSP标签,这种标签把那些信息显示逻辑封装在一个单独的Java类中,通过一个xml文件来描述它的使用。当页面中需要使用类似的显示逻辑时,就可以在页面中...

晨曦之光
2012/05/16
125
0
django为Form生成的label标签添加class

使用Form生成html标签的时候,虽然提供了widget的方法可以自定义标签的要是,但是只能给生成的input标签添加样式,对于生成的label标签无法添加样式。而很多场景下需要为label和input都添加c...

骑士救兵
05/25
0
0
jstl自定义标签接口介绍

JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属性和方法。JspTag接口有Tag和SimpleTag两个直接子接口,JSP2.0以前的版本中只有Tag接口,所以...

陈小默
2016/01/04
218
0
thinkphp自定义模板标签(二)

上篇文章已经把自定义标签的准备工作讲完了;那么接下来就是见证...的时候了;没看如何配置的请先移步thinkphp自定义模板标签(一) 闭合标签就是单标签;比如a标签、img标签等等; 非闭合标签...

白俊遥
2016/03/06
5
0
django自定义标签

参考文章: http://xiao80xiao.iteye.com/blog/519394 (django 自定义标签和过滤器) http://www.cnblogs.com/btchenguang/archive/2012/09/05/2672364.html#WizKMOutline_1346841868165594 (D......

zxcbvbbbbb
2015/01/16
0
0
jfinal下超爽的freemarker自定义标签,web开发的利器

为什么采用freemarker? 1、模板技术,不依附于语言和框架,前端和后端解耦,便于分工协作,更好的协同。 2、页面相应速度快 3、前端非常的灵活,采用自定义标签可以在不更改后端的基础上很容...

菜根乱谭
2012/11/27
0
16
AngularJs学习笔记--IE Compatibility 兼容老版本IE

Short Version(简述)   为了让我们的angular应用在IE上工作,请确保:   1. 按需引入JSON.stringify(IE7或以下的都需要这玩意)。我们可以使用JSON2(https://github.com/douglascro...

武文海
2015/02/06
0
0
说说在 Spring 中如何使用编码方式动态配置 Bean

1 DefaultListableBeanFactory DefaultListableBeanFactory 实现了 ConfigurableListableBeanFactory 接口,可以通过这个类来动态注入 Bean。为了保证注入的 Bean 也能被 AOP 增强,我们需要...

deniro
05/15
0
0
django中自定义标签和过滤器

django中自定义标签和过滤器 原文:http://www.cnblogs.com/MnCu8261/p/5934203.html 纪念如何填了半天的坑,红色重点 想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1 在...

bomby
2017/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
4分钟前
0
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
9分钟前
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
47分钟前
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
58分钟前
2
0
将博客搬至CSDN

AHUSKY
今天
1
0
Python web框架Django学习(1)

1.Django简介 (1)Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django是一个开放源代码的Web应用框架,由Python写成。 (2...

十年磨一剑3344
今天
0
0
Databook-数据之书

Databook-数据之书 用于数据分析的Jupyter Notebooks。 不需购买服务器,快速开始自己的数据分析过程。 源码:https://github.com/openthings/databook 作者:openthings,https://github.co...

openthings
今天
7
0
Python PIPEs

https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm

zungyiu
今天
1
0
gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
今天
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部