`
BradyZhu
  • 浏览: 248361 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSP标签案例----开发If-else和单独的if标签

 
阅读更多

首先是开发一个if标签,先是实现类

package com.bird.web.tag.example;

import java.io.IOException;

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

public class IfTag extends SimpleTagSupport{
	
	private boolean test;

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

	@Override
	public void doTag() throws JspException, IOException {
		if(test){
			this.getJspBody().invoke(null);
		}
	}
	
	
}

然后是TLD描述文件

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <description>A tag library exercising SimpleTag handlers.</description>
    <tlib-version>1.0</tlib-version>
    <short-name>Bird</short-name>
    <uri>/example</uri>
    
    
    <tag>
        <name>referer</name>
		<tag-class>com.bird.web.tag.example.RefererTag</tag-class>
		<body-content>empty</body-content>
		
		<attribute>
			<name>site</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		
		<attribute>
			<name>page</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
    </tag>
    
    
    <tag>
        <name>if</name>
		<tag-class>com.bird.web.tag.example.IfTag</tag-class>
		<body-content>scriptless</body-content>
		
		<attribute>
			<name>test</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		
    </tag>
    
    
     <tag>
        <name>chose</name>
		<tag-class>com.bird.web.tag.example.ChoseTag</tag-class>
		<body-content>scriptless</body-content>	
    </tag>
    
    
     <tag>
        <name>when</name>
		<tag-class>com.bird.web.tag.example.WhenTag</tag-class>
		<body-content>scriptless</body-content>	
		
		<attribute>
				<name>test</name>
				<required>true</required>
				<rtexprvalue>true</rtexprvalue>
		</attribute>
    </tag>
    
    <tag>
        <name>otherwise</name>
		<tag-class>com.bird.web.tag.example.OtherWiseTag</tag-class>
		<body-content>scriptless</body-content>	
    </tag>
    
    
</taglib>

然后使用

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="/example" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>开发IF标签</title>
    
  </head>
  
  <body>
  <%
  	request.setAttribute("user","aaaa");
   %>
  
  	<c:if test="${user==null }">
  		aaaaaa
 	 </c:if>
 	 
 	 <c:if test="${user!=null }">
 	 	bbbbb
 	 </c:if>
  </body>
</html>

下面是开发嵌套标签,if--else 标签

首先还是三个实现类

package com.bird.web.tag.example;

import java.io.IOException;

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

public class ChoseTag extends SimpleTagSupport {
	private boolean isDo;

	public boolean isDo() {
		return isDo;
	}

	public void setDo(boolean isDo) {
		this.isDo = isDo;
	}

	@Override
	public void doTag() throws JspException, IOException {
		this.getJspBody().invoke(null);
	}
	
	
}

然后是when标签

package com.bird.web.tag.example;

import java.io.IOException;

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

public class WhenTag extends SimpleTagSupport{
	private boolean test;

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

	@Override
	public void doTag() throws JspException, IOException {
		ChoseTag parent = (ChoseTag) this.getParent();
		
		if(test && parent.isDo()==false){
			this.getJspBody().invoke(null);
			parent.setDo(true);
		}
	}
	
	
}

然后是else

package com.bird.web.tag.example;

import java.io.IOException;

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

public class OtherWiseTag extends SimpleTagSupport{

	@Override
	public void doTag() throws JspException, IOException {
		ChoseTag parent = (ChoseTag) this.getParent();
		
		if(parent.isDo() == false){
			this.getJspBody().invoke(null);
			parent.setDo(true);
		}
	}
	
	
}

最后是使用
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="/example" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>开发嵌套标签,if-else</title>
 
 </head>

 <body>
 <%session.setAttribute("user","aaa"); %>
 <c:chose>
 			<c:when test="${user==null }">aaaaaaaaaaaa</c:when>
 			<c:otherwise>bbbbbbbbbbbb</c:otherwise>
 </c:chose>
 </body>
</html>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics