您的位置:首页 > Web前端 > JavaScript

分页插件开发(1)--jstl自定义标签

2015-11-01 18:19 716 查看
平时的开发中分页应该算是非常常用的功能了,以前用的基本都是js来控制页面效果,不过总觉得js有点散乱,所以这次使用jstl的自定义标签功能封装一个分页插件。

一、自定义标签库

<?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>mytag tags</description>
<tlib-version>1.0</tlib-version>
<short-name>mytag</short-name>
<tag>
<name>test</name>
<tag-class>com.lxg.tag.MyTags</tag-class>
<body-content>empty</body-content>
<attribute>
<name>pageNo</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>


新建一个xxx.tld文件,定义一个名为test的标签,设置其对应的java类的路径,设置标签的属性。

二、建立对应的java类进行解析xxx.tld标签库

package com.lxg.tag;

import java.util.Enumeration;

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

/**
* @author lxg
*
* 2015年10月21日下午9:49:50
*/
public class MyTags extends TagSupport {

private String pageNo;

public int doEndTag() throws JspException {
StringBuffer sb = new StringBuffer("<div>");
sb.append(pageNo);
sb.append("</div>");
JspWriter writer = pageContext.getOut();
try {
writer.println(new String(sb.toString().getBytes()));
} catch (Exception e) {
throw new JspException(e.getMessage());
}
return EVAL_PAGE;
}

public int doStartTag() throws JspException {
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()) {
String key = en.nextElement().toString();

pageNo = request.getParameter(key);
}

return SKIP_BODY;
}

public String getPageNo() {
return pageNo;
}

public void setPageNo(String pageNo) {
this.pageNo = pageNo;
}

}


建立的类需继承TagSupport,重写doEndTag和doStartTag两个方法。定义一个与标签名相同的变量,实现get和set方法。
在doEndTag方法中可以向外输出一个字符串,字符串的内容就是自定义的标签被解析后转换成的对应的html标签。

三、页面中的引用

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib uri="/WEB-INF/tld/myTag.tld" prefix="mytag" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link type="text/css" rel="stylesheet" href="css/button.css">
<title>Insert title here</title>
</head>
<body>
<mytag:test pageNo="111" />
</body>
</html>

首先在页面中引入我们自定义的标签库
<%@taglib uri="/WEB-INF/tld/myTag.tld" prefix="mytag" %>

然后使用这个标签,并设置其属性值。

<mytag:test pageNo="111"/>

页面效果:



这里实现的就是读取到自定义标签的属性值,并把它显示到页面中。

下一篇文章中我们来实现分页的页面效果。

项目源码:https://github.com/li5454yong/MyTagLib.git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: