实现 jstl标签foreach 功能
2024-08-30 20:35:19
jsp 页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/includes/ctx.jsp" %>
<%@ taglib uri="/RemoveListItems" prefix="z"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>角色管理</title>
</head>
<body>
<z:for items="${rolelist}" var="z">
<p>${z.rolename}</p>
</z:for>
</body>
</html>
WEB-INF 目录下创建tld 文件
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.5" 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">
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>eRedLab JSPTag Library</shortname>
<uri>/RemoveListItems</uri>
<info>自定义标签</info> <tag>
<name>for</name>
<tagclass>com.oa.tag.Repeater</tagclass>
<bodycontent>scriptless</bodycontent>
<info></info>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>var</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>index</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
java 类代码
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport; public class Repeater extends TagSupport { /**
*
*/
private static final long serialVersionUID = 4086401651029717288L;
private List<?> items;
private String var;
private String index;
private int i; @Override
public int doStartTag() throws JspException { if (items == null || items.size() == 0){
return SKIP_BODY;
}
if(index==null)index = ""; i = 0;
if(i<items.size()){
pageContext.setAttribute(var, items.get(i));
pageContext.setAttribute(index, i);
} return EVAL_BODY_INCLUDE;
} @Override
public int doAfterBody() throws JspException {
i++;
if(i < items.size()){
pageContext.setAttribute(var, items.get(i));
pageContext.setAttribute(index, i);
return EVAL_BODY_AGAIN;
} return SKIP_BODY;
} @Override
public int doEndTag() throws JspException {
return EVAL_PAGE;
} public void setItems(List<?> items) {
this.items = items;
} public void setVar(String var) {
this.var = var;
} public void setIndex(String index){
this.index = index;
} }
最新文章
- 对session的理解
- 自话自说——POI使用需要注意一个地方
- Android项目实战(三):实现第一次进入软件的引导页
- Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn
- debian7下部署nginx服务器
- boost.asio源码剖析(二) ---- 架构浅析
- 乱序双发射 和 GHB的分支预测
- html5时间选择器
- Python Open Flash Chart (pyOFC2) — Home
- 近期在调用 calendar.js 的时候出现中文乱码! 解决方式
- [Selenium With C#学习笔记] Lesson-02 Web元素定位
- configparser模块的常见用法
- dnSpy 强大的.Net反编译软件
- 405 css样式的研究 list-style-type 属性研究
- RESTful协议
- hyperscan在低版本系统应用问题
- win7获取system32所有权
- 谈谈在 .Net 平台上的 软件生态 和 软件生产力
- 跟踪分析Linux内核的启动过程小解
- SharpGL学习笔记(九) OpenGL的光照模型, 术语解释
热门文章
- pthread_create()创建线程时传入多个參数
- SpringMVC-Interceptor拦截Session登录
- Mysql中You can&#39;t specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
- 初学ToggleButton 点击button,更换button背景图片;再次点击,恢复之前背景图
- iis browse的时候,直接通过本地的局域网ip打开页面
- 通过QEMU-GuestAgent实现从外部注入写文件到KVM虚拟机内部
- 10. Regular Expression Matching[H]正则表达式匹配
- SQL语句之Group By
- Hibernate框架学习(三)——实体规则、对象状态、一级缓存
- Android自定义日历控件(继承系统控件实现)