文档章节

自定义标签(二)

萧小蚁
 萧小蚁
发布于 2015/06/09 21:50
字数 443
阅读 12
收藏 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>


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

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

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

mickelfeng
2015/12/23
19
0
自定义标签栏控制器

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

不孤独的美食家
2015/09/06
45
0
thinkphp自定义模板标签(二)

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

白俊遥
2016/03/06
5
0
JSP自定义标签扩展----支持EL,访问Spring容器

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

lee123lee
2013/09/28
0
0
Android 自定义标签 Imagebutton实现ImageButton里放置文字

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

amigos_wu
2012/05/27
0
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

移除或自定义 WordPress 仪表盘欢迎面板

第一次登录 WordPress 后台仪表盘页面,默认都会显示 WordPress 的欢迎面板: 如果我们要移除这个面板,在主题的 functions.php 中添加下面的代码即可: 12 //移除 WordPress 仪表盘欢迎面...

james_laughing
18分钟前
0
0
HashMap实现原理及源码分析

HashMap实现原理及源码分析   哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,...

DemonsI
22分钟前
0
0
eggjs学习笔记

快速初始化 生成项目(要求最低的node版本8.x) npm i egg-init -gegg-init egg-example --type=simplecd egg-examplenpm i 启动项目 npm run dev 配置 环境配置会覆盖默认配置 config...

别人说我名字很长
25分钟前
1
0
Winform Timer控件时间间隔

sender as System.Timers.Timer).Interval = 23 * 60 * 60 * 1000.0;//将时间间隔改为23小时,23小时后重新发生timer_Elapsed事件。 //60000:时间间隔1分钟,300000:时间间隔5分钟,600000:...

笑丶笑
26分钟前
0
0
在win10系统下怎样快速切换任务视图

切换窗口:Alt + Tab 任务视图:Win + Tab (松开键盘界面不会消失) 切换任务视图:Win + Ctrl +左/右 创建新的虚拟桌面:Win + Ctrl + D 关闭当前虚拟桌面:Win + Ctrl + F4...

SummerGao
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部