JSP标签&if&foreach示例

开发实例:

if标签:

助手类:

public class IfTag extends BodyTagSupport{
private boolean test;

public boolean isTest() {
	return test;
}

public void setTest(boolean test) {
	this.test = test;
}

@Override
public int doStartTag() {
	if(this.test) {
		return EVAL_BODY_INCLUDE;
	}
	return SKIP_BODY;
}
}

描述文件(tld)

<!-- if	 -->
	<tag>
	<!-- 标签名 -->
	<name>if</name>
	<!-- 标签助手类:全限地名 -->
	<tag-class>com.zking.jsp.IfTag</tag-class>
	<!-- 标签的内容类型:empty:空标签,jsp:可以为任何合法的jsp元素 -->
	<body-content>jsp</body-content>
	<attribute>
	<!-- 属性名:outTag类中的val属性相匹配 -->
		<name>test</name>
		<!-- 表示该属性为必要的属性 -->
		<required>true</required>
		<!-- 该属性可以接受的EL表达式的值 -->
		<rtexprvalue>true</rtexprvalue>
		<!-- 标签描述:用于说明标签的作用 -->
		<description>out属性标签,val属性</description>
	</attribute>
	</tag>

引入标签

	<z:if test="${100 == 100}">
		测试if(100 == 100)
	</z:if>
	
	<z:if test="${100 != 200}">
		测试if(100 != 200)
	</z:if>

foreach标签:

助手类:

package com.zking.jsp;

import java.util.Iterator;
import java.util.List;
import java.util.Objects;

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

public class ForeachTag extends BodyTagSupport {
	private List<?> items;
	private String var;
	public List<?> getItems() {
		return items;
	}
	public void setItems(List<?> items) {
		this.items = items;
	}
	public String getVar() {
		return var;
	}
	public void setVar(String var) {
		this.var = var;
	}
	
	@Override
	public int doStartTag() throws JspException {
		if(Objects.isNull(this.items)||this.items.size()==0) {
			return  SKIP_BODY;
		}
//		将items里的元素便利
		Iterator<?> it = this.items.iterator();
//		获取他的下一个元素
		Object obj = it.next();
//		var指用户在首页传入的内容,
		this.pageContext.setAttribute(var, obj);
		this.pageContext.setAttribute("it", it);
		return EVAL_BODY_INCLUDE;
	}
	
	@Override
	public int doAfterBody() throws JspException {
//		获取作用域里的元素,需要强转一下
		Iterator<?> it = (Iterator<?>) this.pageContext.getAttribute("it");
//		获取他的下一个元素
		if(it.hasNext()) {
			this.pageContext.setAttribute(var, it.next());
//			自己调用自己,直到符合要求
			return EVAL_BODY_AGAIN;
		}
		return SKIP_BODY;
	}
}

描述文件(tld)

<!-- Foreach -->
	<tag>
	<!-- 标签名 -->
	<name>foreach</name>
	<!-- 标签助手类:全限地名 -->
	<tag-class>com.zking.jsp.ForeachTag</tag-class>
	<!-- 标签的内容类型:empty:空标签,jsp:可以为任何合法的jsp元素 -->
	<body-content>jsp</body-content>
	<attribute>
	<!-- 属性名:outTag类中的val属性相匹配 -->
		<name>items</name>
		<!-- 表示该属性为必要的属性 -->
		<required>true</required>
		<!-- 该属性可以接受的EL表达式的值 -->
		<rtexprvalue>true</rtexprvalue>
		<!-- 标签描述:用于说明标签的作用 -->
		<description>out属性标签,val属性</description>
	</attribute>
	
		<attribute>
	<!-- 属性名:outTag类中的val属性相匹配 -->
		<name>var</name>
		<!-- 表示该属性为必要的属性 -->
		<required>true</required>
		<!-- 该属性可以接受的EL表达式的值 -->
		<rtexprvalue>true</rtexprvalue>
		<!-- 标签描述:用于说明标签的作用 -->
		<description>out属性标签,val属性</description>
	</attribute>
	</tag>

引入标签

	<z:foreach items="${books}" var="books">
		<p>${books.id} - ${books.name}</p>
	</z:foreach>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值