文档章节

自定义标签(二)

萧小蚁
 萧小蚁
发布于 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

没有更多内容

加载失败,请刷新页面

加载更多

SingleNumber136 leetCode

Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you im......

woshixin
昨天
1
0
String ,  StringBuffer ,  StringBuilder的区别

String , StringBuffer , StringBuilder的区别 String 首先,String 是用来表示一个字符串常量的,它是一个不可变对象,意味着,一旦我们创建了某个字符串之后,就不能再改变它的值了,我们可...

tsmyk0715
昨天
2
0
区块链100讲:UTXO 和 Account 模型对比

在当前区块链世界中,主要有两种记录保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式。Bitcoin 采用的是 UTXO 模型,Ethereum 采用的 Account 模型,同样 CITA 也采用了 ...

HiBlock
昨天
1
0
Vue中路由管理器Vue Router使用介绍(三)

一、路由定义添加动态参数定义 1.路由定义项,使用:xx 方式 定义动态参数 { path:'/user/:id/:name', name:'user', component:()=>import('./views/User.vue') ...

tianma3798
昨天
1
0
从ibdata文件恢复mysql数据

DROP TABLE 恢复【一】 Recover InnoDB dictionary Percona Data Recovery Tool 单表恢复

IT--小哥
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部