文档章节

自定义标签(二)

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

import java.util.Collection;

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

/**
 * 
 * @author sally
 *<s:for item=${} var="a"
 */
public class ForTag extends TagSupport {

	private Collection<?> item;
	private Object var;
	private java.util.Iterator<?> it;
	
	@Override
	public int doAfterBody() throws JspException {
		if(item!=null&&it.hasNext()){
			Object obj=it.next();
			pageContext.setAttribute(var.toString(), obj);
			return EVAL_BODY_AGAIN;
		}else{
			return SKIP_BODY;
		}
	}

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

	@Override
	public int doStartTag() throws JspException {
		if(item==null){
			return SKIP_BODY;
		}else{
			it=item.iterator();
			if(it.hasNext()){
				Object obj=it.next();
				pageContext.setAttribute(var.toString(), obj);
			}
			return EVAL_BODY_INCLUDE;
		}
		
	}

	/**
	 * 
	 * @param item the item to set
	 */
	public void setItem(Collection<?> item) {
		this.item = item;
	}

	/**
	 * 
	 * @param var the var to set
	 */
	public void setVar(Object var) {
		this.var = var;
	}

}
<?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>
  	<tag>
  		<name>for</name>
  		<tag-class>model.ForTag</tag-class>
  		<body-content>JSP</body-content>
  		<attribute>
  			<name>item</name>
  			<required>true</required>
  			<rtexprvalue>true</rtexprvalue>
  		</attribute>
  		<attribute>
  			<name>var</name>
  			<required>true</required>
  			<rtexprvalue>true</rtexprvalue>
  		</attribute>
  	</tag>
  </taglib>
package model;

public class Student {

	private int id;
	private String name;
	
	public Student(int id,String name){
		this.id=id;
		this.name=name;
	}
	public Student(){
		
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}
<%@ page language="java" import="java.util.*,model.*" 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);
  	
  	List<String> list=new ArrayList();
  	list.add("zhangsan");
  	list.add("lisi");
  	list.add("wangwu");
  	list.add("zhouliu");
  	request.setAttribute("list", list);
  	
  	Student stu1=new Student(1001,"张三");
  	Student stu2=new Student(1002,"李四");
  	List<Student> stuList=new ArrayList();
  	stuList.add(stu1);
  	stuList.add(stu2);
  	request.setAttribute("stuList", stuList);
   %>
    <s:if test="${5>4 }">真的</s:if>
    
    <s:loop count="${c }">
    	hello
    </s:loop>
    <h3>标题</h3>
    
    <s:for var="str" item="${list }">
   		${str }
   </s:for>
   <br/>
   <s:for var="stu" item="${stuList }">
   		${stu.id }--->${stu.name }
   </s:for>
  </body>
</html>


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

粉丝 96
博文 278
码字总数 192339
作品 0
海淀
程序员
DeDeCMS列表页使用dede:arclist和dede:list标签调用文章正文内容_搜索引擎技

通常dedecms列表和内容页可以利用系统内置标签[field:description/]来调用,但有时候后台文章摘要需要其它用处,那么这个时候需要调用部分文章正文内容做为摘要显示。实现方法有两种,分别使用...

mickelfeng ⋅ 2015/12/23 ⋅ 0

自定义标签栏控制器

第一部分 准备工作 一 新建一个工程,创建五个我们所需的控制器,都继承自UIViewController 二 点击进入main.storyboard,把原来的控制器删除,拖入一个UITabBarController,再分别拖入五个导...

不孤独的美食家 ⋅ 2015/09/06 ⋅ 0

thinkphp自定义模板标签(二)

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

白俊遥 ⋅ 2016/03/06 ⋅ 0

JSP自定义标签扩展----支持EL,访问Spring容器

一、使JSP自定义标签支持EL表达式(${}) 我写了自定义标签a:rim,想让他的title属性支持${},可是出现了异常. 要做下面两件事就可以达到目的了: 1 在tld文件如下配置: 其中关键的是 <rtexprval...

lee123lee ⋅ 2013/09/28 ⋅ 0

Android 自定义标签 Imagebutton实现ImageButton里放置文字

1 .android的ImageButton标签是没有text属性的,那么我们要在一个ImageButton里放置文字怎么办呢? 先上效果图如下: 如果我们不设置背景效果如下:但是给人的感觉就行分离的两个组件: 我们...

amigos_wu ⋅ 2012/05/27 ⋅ 4

django中自定义标签和过滤器

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

bomby ⋅ 2017/08/17 ⋅ 0

(六)JSP之自定义标签

JSP自定义标签实现方式: 1.使用TLD文件 2.使用tag文件 一、使用TLD文件 1.创建一个标签处理类 (1)继承TagSupport类 实例1 HelloWorldTag.java 实例2 IterateTag .java (2)继承SimpleTagSupp...

iborder ⋅ 2016/09/05 ⋅ 0

iOS开发中标签控制器的使用——UITabBarController

iOS开发中标签控制器的使用——UITabBarController 一、引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理方...

珲少 ⋅ 2015/11/13 ⋅ 0

XML语言介绍、XML约束、和解析XML语言的几种方式。

一、XML定义 1.1、XML介绍 Extensible Markup Language 可扩展的标记语言.XML技术是W3C组织发布的,目前推荐遵循的是W3C组织于2000年发布的XML1.0规范。在现实生活中大量存在有关系的数据。可...

AAASSSSddd ⋅ 2016/03/31 ⋅ 0

jsp中的自定义标签

(jsp 1.0规范) 一,自定义标签主要用于移除Jsp页面中的java代码; 使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤: 1,编写一个实现Tag接口的Java类(标签处理器类)。 2,...

宇宙执政 ⋅ 2014/11/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部