`
jxqc_job
  • 浏览: 529 次
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
自定义标签和标签库函数的学习 自定义标签和标签库函数的学习
自定义标签和标签库函数的学习--自己的Demo
自定义表单标签和标签库函数:.tld文件必须放在WEB-INF下
1. viewIpTag.tld
<?xml version="1.0" encoding="UTF-8" ?>  
  
<!-- 这是从 绿色版\apache-tomcat-7.0.42\webapps\examples\WEB-INF\jsp2\jsp2-example-taglib.tld 模板中拷贝过来的 -->  
<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>我的自定义标签</description>
    <tlib-version>1.0</tlib-version>
    <short-name>自定义标签</short-name>
    <uri>/thisIsMyTag</uri>
    <tag>
    	<!-- 标签属性的名称 -->
    	<name>colname</name>
    	<tag-class>com.happiness.tag.ShowLocalIP</tag-class>
    	<!-- 有没有标签体,这里empty表示没有,有的话就写jsp -->
    	<body-content>JSP</body-content>
    	<attribute>
    		<description>姓名</description>
    		<name>username</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>性别</description>
    		<name>sex</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>年龄</description>
    		<name>age</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    </tag>
    <function>
    	<description>显示表格行的函数</description>
    	<name>showTableRow</name>
    	<function-class>com.happiness.tag.SelfFunction</function-class>
    	<function-signature>java.lang.String pdType(java.lang.String)</function-signature>
    </function>
</taglib>


2. ShowLocalIP.java
package com.happiness.tag;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.happiness.pojo.StudentPojo;

public class ShowLocalIP extends TagSupport{
	private String username;
	private String sex;
	private Integer age;

	@Override
	public int doStartTag() throws JspException {
		HttpServletRequest request = (HttpServletRequest)this.pageContext.getRequest();
		JspWriter out = this.pageContext.getOut();
//		String ip = request.getRemoteAddr();
//		List<StudentPojo> ss = new ArrayList<StudentPojo>();
//		ss.add(new StudentPojo("张三","男",20));
//		ss.add(new StudentPojo("李四","男",20));
//		ss.add(new StudentPojo("王五","女",20));
//		ss.add(new StudentPojo("刘麻子","女",20));
		
		try{
				out.print("<tr width='50%'>");
				out.print("   <td width='30%'>"+this.username+"</td>");
				out.print("   <td width='30%'>"+this.sex+"</td>");
				out.print("   <td width='30%'>"+this.age+"</td>");
				out.print("</tr>");
		}catch(Exception e){
			throw new RuntimeException(e);
		}
		return super.doStartTag();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

}


3. SelfFunction.java
package com.happiness.tag;

public class SelfFunction {
	/**方法必须为static类型的*/
	public static String pdType(String ageStr){
		Integer age = null;
		if(ageStr == null || "".equals(ageStr)){
			age = 0;
		}else{
			age = Integer.parseInt(ageStr);
		}
		if(age < 18)
			return "青少年";
		else if(age >= 18 && age < 40)
			return "青年";
		else if(age >= 40 && age < 60)
			return "青壮年";
		else 
			return "老年";
	}
}

4. index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/thisIsMyTag" prefix="tt"%>  
<html>  
  <head>  
    <title>My JSP 'ELDemo.jsp' starting page</title>  
  </head>  
    
  <body>
    表格如下:  
    <!-- 因为没有标签体,所以直接一个标签就可以了 -->  
    <table>
    	<!-- 自定义标签实现的表格行 -->
    	<tt:colname username="张三" sex="男" age="20"></tt:colname>
    	<tt:colname username="李四" sex="男" age="23"></tt:colname>
    	<tt:colname username="王五" sex="女" age="25"></tt:colname>
    </table>
    <!-- 自定义标签库函数的使用 -->
    	16岁: ${tt:showTableRow("16")}<br />
    	26岁: ${tt:showTableRow("26")}<br />
    	46岁: ${tt:showTableRow("46")}<br />
    	66岁: ${tt:showTableRow("66")}<br />
  </body>  
</html>  

Global site tag (gtag.js) - Google Analytics