jsp自定义分页标签

本文介绍如何在JSP中实现自定义分页标签,包括配置web.config、创建tld文件及PageTag类,最终在页面上使用该标签进行分页显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!-- 正文开始 -->

1.在web.config中添加 

<jsp-config>
 <taglib>
 <taglib-uri>/tld/page</taglib-uri>
 <taglib-location>/WEB-INF/tlds/page.tld</taglib-location>
 </taglib>
</jsp-config>

 

2.在WEB-INF下建立文件夹tlds,在文件夹下建立page.tld文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
 <tlib-version>1.0</tlib-version><!-- 标签库的版本 -->
 <jsp-version>1.2</jsp-version><!-- 这个标签库要求的JSP规范版本 -->
 <short-name>mytag</short-name><!-- JSP页面编写工具可以用来创建助记名的可选名字 -->
 <tag>
  <name>page</name><!-- 唯一标签名 -->
  <tag-class>com.crm.other.PageTag</tag-class>
  <body-content>empty</body-content><!-- 正文内容类型 -->
  <!-- 参数  -->
  <attribute>
   <name>url</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>strParam</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>totalRecoders</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>pageNo</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>totalPages</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>pre</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
  <attribute>
   <name>next</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
 </tag>
</taglib>

3.在包com.crm.other中建立一个类PageTag

package com.crm.other;

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

public class PageTag extends TagSupport {
 
 private String url;
 private String strParam;
 private String totalRecoders;
 private String pageNo;
 private String totalPages;
 private String pre;
 private String next;
 
 public void setUrl(String url) {
  this.url = url;
 }
 
 public void setNext(String next) {
  this.next = next;
 }
 
 public void setPre(String pre) {
  this.pre = pre;
 }
 
 public void setTotalPages(String totalPages) {
  this.totalPages = totalPages;
 }
 
 public void setPageNo(String pageNo) {
  this.pageNo = pageNo;
 }
 
 public void setStrParam(String strParam) {
  this.strParam = strParam;
 }
 
 public void setTotalRecoders(String totalRecoders) {
  this.totalRecoders = totalRecoders;
 }
 
 @Override
 public int doStartTag() throws JspException {
  StringBuilder sb = new StringBuilder();
  sb.append("<script type='text/javascript'>");
  sb.append("function doPage(pageNo){");
  sb.append("var frm=document.getElementByIdx_x('pageForm');");
  sb.append("frm.pageNo.value=pageNo;");
  sb.append("frm.submit();");
  sb.append("}");
  sb.append("</script>");
  
  sb.append("<form action='");
  sb.append(url);
  sb.append("' id='pageForm' >");
  sb.append(" <div class='pager'>");
  
  sb.append(strParam);
  sb.append("共");
  sb.append(totalRecoders);
  sb.append("条记录 ");
  sb.append("第");
  sb.append(pageNo);
  sb.append("页/共");
  sb.append(totalPages);
  sb.append("页 ");
  sb.append("<a href='javascript:doPage(1)'>第一页</a> ");
  sb.append("<a href='javascript:doPage(");
  sb.append(pre);
  sb.append(")'>上一页</a> ");
  sb.append("<a href='javascript:doPage(");
  sb.append(next);
  sb.append(")'>下一页</a> ");
  sb.append("<a href='javascript:doPage(");
  sb.append(totalPages);
  sb.append(")'>最后一页</a> ");
  sb.append("转到<input type='text' name='pageNo' style='width:30px' value='' />页 ");
  sb.append("<input type='submit' value='GO' style='width:28px;' />");
  sb.append("</div>");
  
  sb.append("</form>");
  try {
   if (sb != null) {
     JspWriter out = pageContext.getOut();
     out.print(sb);
     }
  } catch (Exception e) {
   throw new JspException("错误");
  }
  
  return EVAL_PAGE;
 }
}

 

4.在页面上显示内容

添加标签<%@ taglib uri="/tld/page" prefix="myTag" %>

<myTag:page url="/crm/sal/salChance.do" strParam="${strParam}" totalRecoders="${page.totalRecords}" pageNo="${page.pageNo}" totalPages="${page.totalPages}" pre="${page.pre}" next="${page.next}"/>

 

其中在struts中查到的分页是要自己来写的,自己写出查到的内容,然后套进这些el表达式里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值