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

分页控件 JSTL

 
阅读更多
第一步 用static方法来进行分页
JSP
<% Hashtable<String, String> map = new Hashtable<String, String>(); 
        	   map.put("fileName", fileName);
        	   map.put("startTime", startTime);
        	   map.put("endTime", endTime);
        	   map.put("fileStatus", fileStatus);%>
        	<%= PageHelper.NormalPager(request, 
        							  PageHelper.PER_PAGE_COUNT, 
        							  totalCount, 
        							  "summary.do",
        							  UrlUtils.getParameterString(map))%>



后台代码
public static String NormalPager(HttpServletRequest request, int pageSize,
			int totalCount, String actionName, String paramString) {
		return GeneratePager(request, pageSize, totalCount, actionName,
				paramString);
	}

public static String GeneratePager(HttpServletRequest request,
			int pageSize, int totalCount, String actionName, String paramString) {
		int totalPages = GetTotalPageCount(totalCount, pageSize);

		if (IsOnlyOnePage(totalPages)) {
			return "";
		}

		int currentPage = GetCurrentPage(request, totalPages);

		StringBuilder output = new StringBuilder();
		output.append("<div class='pagination'>");
		HandleFirstPage(output, currentPage, actionName, paramString);
		HandlePreviousPage(output, currentPage, actionName, paramString);
		HandlePagers(output, totalPages, currentPage, actionName, paramString);
		HandleNextPage(output, totalPages, currentPage, actionName, paramString);
		HandleLastPage(output, totalPages, currentPage, actionName, paramString);
		output.append("</div>");

		logger.debug(output.toString());

		return output.toString();
	}



private static int GetTotalPageCount(int totalCount, int pageSize) {
		logger.debug("totalCount:" + totalCount);
		logger.debug("pageSize:" + pageSize);
		return Math.max((totalCount + pageSize - 1) / pageSize, 1);
	}

private static void HandleFirstPage(StringBuilder output, int currentPage,
			String actionName, String paramString) {
		if (CurrentInFirstPage(currentPage)) {
			output.append("<span class='disabled'>First</span>");
		} else {
			output.append(String.format(
					"<a href='%1$s?page=%2$d&%3$s'>First</a>", actionName, 1,
					paramString));
		}
	}

private static void HandleNextPage(StringBuilder output, int totalPages,
			int currentPage, String actionName, String paramString) {

		if (CurrentInLastPage(currentPage, totalPages)) {
			output.append("<span class='disabled'>next</span>");
		} else {
			output.append(String.format(
					"<a href='%1$s?page=%2$d&%3$s'>next</a>", actionName,
					currentPage + 1, paramString));
		}
	}


第二步 用JSTL来包装该静态方法
JSP
<p:page id="${SummaryCISBean.batchId }" startTime="${SummaryCISBean.startTime}" endTime="${SummaryCISBean.endTime}" 
            status="${SummaryCISBean.batchStatus}" totalCount="${SummaryCISBean.totalCount}" currentPage="${page}" />


tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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 web-jsptaglibrary_2_0.xsd">
  <tlib-version>1.0</tlib-version>
  <short-name>p</short-name>
  <uri>/WEB-INF</uri>
  
  <tag>
    <name>page</name>
    <tag-class>test.CIMPageTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
      <name>id</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
    <attribute>
      <name>status</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
    <attribute>
      <name>startTime</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
     <attribute>
      <name>endTime</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
     <attribute>
      <name>currentPage</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
     <attribute>
      <name>totalCount</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
        
  </tag>
</taglib>


Tag类
package test;

import java.io.IOException;
import java.util.Hashtable;

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

import org.apache.commons.lang.StringUtils;

import com.hp.ucmdb.adapter.util.PageHelper;
import com.hp.ucmdb.adapter.util.UrlUtils;


public class CIMPageTag extends SimpleTagSupport {

	String id;
	String status;
	String startTime;
	String endTime;
	String currentPage;
	String totalCount;

    public void doTag() throws JspException {
    	System.out.println(toString());
    	
       Hashtable<String, String> map = new Hashtable<String, String>(); 
       map.put("batchId", StringUtils.defaultString(id));
 	   map.put("startTime", StringUtils.defaultString(startTime));
 	   map.put("endTime", StringUtils.defaultString(endTime));
 	   map.put("batchStatus", StringUtils.defaultString(status));
 	   currentPage="".equals(currentPage)?"1":currentPage;
 	  JspWriter out=getJspContext().getOut();
 	  try {
		out.write(PageHelper.NormalPager(Integer.valueOf(currentPage), 
								  PageHelper.PER_PAGE_COUNT, 
								  Integer.valueOf(totalCount), 
								  "summary_cis.do",
								  UrlUtils.getParameterString(map)));
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} 
 	   
    }

	@Override
	public String toString() {
		
		
		return "CISPageTag [id=" + id + ", status=" + status + ", startTime="
				+ startTime + ", endTime=" + endTime + ", currentPage="
				+ currentPage + ", totalCount=" + totalCount + "]";
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getStartTime() {
		return startTime;
	}

	public void setStartTime(String startTime) {
		this.startTime = startTime;
	}

	public String getEndTime() {
		return endTime;
	}

	public void setEndTime(String endTime) {
		this.endTime = endTime;
	}

	public String getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(String currentPage) {
		this.currentPage = currentPage;
	}

	public String getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(String totalCount) {
		this.totalCount = totalCount;
	}   
}

分享到:
评论

相关推荐

    js分页插件

    3. **多页面支持**:如标题所言,一些分页插件允许在一个页面上显示多个独立的分页控件,且它们之间不会互相影响。这在处理多个数据列表或者不同区域的分页需求时非常有用。 4. **响应式设计**:考虑到现代网站需要...

    分页功能实现java

    4. 分页控件:在前端页面上提供分页控件,如“上一页”、“下一页”、“跳转到第n页”等。 在Java后端代码中,实现分页逻辑可以通过多种方式,例如: - 原生SQL:通过在查询语句中添加LIMIT和OFFSET来实现分页。 -...

    仿百度分页jsp版

    JSP页面通过EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签库来渲染分页控件,并与后台Java代码进行交互。此外,可能还涉及到Ajax异步请求,以实现无刷新的分页效果,提升用户体验...

    很方便的分页,主要用标签实现

    以HTML5的`&lt;datagrid&gt;`标签为例,它提供了一种原生的分页解决方案,允许开发者通过设置简单的属性来实现数据的分页显示,如`datagrid-pager`用于指定分页控件的位置,`datagrid-pagesize`来设置每页显示的条目数。...

    java 模仿google的分页代码

    - 创建一个自定义标签(例如:`pagingTag`),该标签负责渲染分页控件。标签需要获取`Page`对象并决定哪些页码应该显示。 - 标签可以包含`&lt;a&gt;`标签,用于链接到不同页面,以及可能的“上一页”和“下一页”链接。 ...

    MyEclipse环境下实现分页相关视频

    根据设备特性调整分页控件的样式和交互方式,确保在手机、平板和桌面电脑上都能良好使用。 8. **安全性**:在处理分页请求时,需要验证用户输入的页码和每页数量,防止恶意攻击,如注入大数值导致性能下降或暴露...

    jsp+servlet+json分页

    3. **分页样式**:前端展示时,可以使用CSS和JavaScript优化分页控件的样式和交互效果。 4. **错误处理**:添加异常处理机制,确保在遇到问题时能给出友好的错误提示。 这个项目虽然简单,但对于初学者来说,涵盖了...

    eclipse基于mysql分页的方法实现

    在 JSP 页面中展示表格数据,并添加分页导航控件。 ##### 步骤 3: 实现后端逻辑 后端需要处理分页相关的业务逻辑: - 接收前端传递过来的当前页码 `currentPage`。 - 计算偏移量 `offset = (currentPage - 1) * ...

    分页page_struts2_.rar

    这个类可能会包含如`getCurrentPage()`、`getTotalPage()`、`getPageSize()`等方法,方便在视图层展示分页控件。 3. **queryHotel.jsp**:这是一个查询酒店的JSP页面,可能包含一个表单来让用户输入查询条件,比如...

    spageview分页taglib demo1版

    本文将详细解析“spageview分页taglib demo1版”,这是一个基于自定义Tag库实现的分页控件,旨在简化Java Web项目中的分页处理。 首先,`spageview.jar`是该分页功能的核心组件,它包含了一个或多个定制的Tag类,...

    JAVA分页大全.pdf

    3. **数据展示**:在用户界面中根据计算出的分页信息展示相应的数据和分页控件。 4. **用户交互**:响应用户的翻页请求,并且更新数据显示。 此段代码不仅提供了分页功能的实现,还考虑到了一些细节问题,例如,当...

    ssh 分页 代源码 简单易懂

    在前端,通常会有一个分页控件,用户可以通过选择页码或调整每页显示条数来查看不同部分的数据。后端则需要根据前端传递的参数,如当前页和每页数量,去数据库中查询相应的数据并返回。 标题中的"ssh 分页 代源码...

    JSP+Servlet分页

    在提供的“自定义标签(分页和下拉框控件)”中,可能包含了这样的分页控件。这些标签通常接受一些属性(如当前页、总页数等),并生成相应的HTML输出,包括页码链接和样式。 6. **交互与响应**:用户点击分页链接时...

    jsp javabean 分页

    在JSP页面上,我们可以使用JSTL(JavaServer Pages Standard Tag Library)或EL(Expression Language)来动态地展示分页控件。例如,我们可以遍历JavaBean的`totalPages`属性,生成页码链接: ```jsp ...

    javaWeb分页代码

    10. **响应式设计**:考虑到不同设备的屏幕尺寸,分页控件应该具有良好的响应性,适应手机、平板和桌面等多种设备。 以上是基于JSP和Servlet实现分页的主要知识点。在这个“day15”压缩包中,你可以找到具体的代码...

    完整Struts2 HIBERNATE实现分页

    这通常涉及到使用JSTL标签库中的`&lt;c:forEach&gt;`来遍历数据集,并使用自定义的HTML元素或者现有的JavaScript库(如jQuery插件)来生成分页链接。 通过以上步骤,我们就可以在一个Java Web应用程序中实现Struts2与...

    pager-taglib分页

    首先,`pager-taglib`是基于JSTL(JavaServer Pages Standard Tag Library)的扩展,提供了一组自定义标签,这些标签可以轻松地在JSP页面上创建分页链接。通过将后台数据组织成`List`对象,我们可以直接将这个`List`...

    jsp分页bean

    例如,使用EL获取Bean的属性值,使用JSTL的`c:forEach`标签遍历分页链接。此外,还可以自定义JSP标签库,以提供更高级的分页功能,如跳转到第一页、最后一页,或者直接输入页码跳转。 分页过程中,关键在于如何根据...

    JSP GridView --使用自定义标签实现ASP.NET的控件

    在ASP.NET中,GridView是用于显示数据集或数据源的常用控件,支持多种操作,如排序、分页、编辑和删除。在JSP中,虽然没有内置的GridView控件,但可以通过自定义标签来实现类似的功能。 这篇博客文章 "JSP GridView...

Global site tag (gtag.js) - Google Analytics