`
whoosh
  • 浏览: 233814 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

修改pager-taglib的两个bug

阅读更多
BUG1:在网页中输入一些中文的过滤信息,然后查询,一开始的结果是正确的,但是当点击分页链接想跳到别的页面的时候会出现乱码。
原因:在com.jsptags.navigation.pager包下面的PagerTag类里面有个addParam方法,他在进行编码处理的时候使用了已经被废除的java.net.URLEncoder.encode方法,该方法直接使用系统默认的编码来进行编码,系统默认的编码是gbk,而我们页面的编码是utf-8,这样就造成的乱码。
修复方法:
final void addParam(String name, String value) {
		//获取页面编码
		String encoding=pageContext.getResponse().getCharacterEncoding();
		try {
			if (value != null) {
//				name = java.net.URLEncoder.encode(name);
//				value = java.net.URLEncoder.encode(value);这两个方法会直接使用系统默认的编码来进行编码,系统默认的编码是gbk,而我们页面的编码是utf-8
				name = java.net.URLEncoder.encode(name,encoding);
				value = java.net.URLEncoder.encode(value,encoding);

				uri.append(params == 0 ? '?' : '&')
				   .append(name).append('=').append(value);

			   params++;

			} else {
				String[] values = pageContext.getRequest().getParameterValues(name);

				if (values != null) {
					name = java.net.URLEncoder.encode(name,encoding);
					for (int i = 0, l = values.length; i < l; i++) {
						value = java.net.URLEncoder.encode(values[i],encoding);
						uri.append(params == 0 ? '?' : '&')
						   .append(name).append('=').append(value);

						params++;
					}
				}
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}


BUG2:当过滤结果为0的时候,lastpager的链接为负数。
原因:
package com.jsptags.navigation.pager;

public final class LastTag extends JumpTagSupport {

	protected int getJumpPage() {
		//这边没有作判断
		return (pagerTag.getPageCount() - 1);
	}
}

修复方法
package com.jsptags.navigation.pager;

public final class LastTag extends JumpTagSupport {

	protected int getJumpPage() {
		if (pagerTag.getPageCount()==0) {
			return 0;
		}
		return (pagerTag.getPageCount() - 1);
	}
}
1
2
分享到:
评论
1 楼 lxh2002 2013-06-13  
很不错,一直在用这个分页库,当场是强制改成utf-8编码的,没有考虑可以获取页面编码。学习了,谢谢!

相关推荐

    使用pager-taglib分页完整例子

    总的来说,`pager-taglib`是一个强大的工具,可以帮助JavaWeb开发者快速实现高效且美观的分页功能。其易用性、灵活性和丰富的定制选项使得它成为处理大量数据时的理想选择。通过学习和实践,你可以掌握这个库的使用...

    pager-taglib.jar包下载

    这个文件`pager-taglib_jar包`就是`pager-taglib`框架的实现,是一个Java Archive(JAR)文件,包含了该框架的所有类和资源。在Java Web项目中,需要将这个JAR包添加到项目的类路径(ClassPath)中,以便在编译和...

    pager-taglib分页标签

    `pager-taglib`是一个开源的JSP标签库,提供了一系列易于使用的分页标签,如`&lt;pager:page&gt;`、`&lt;pager:previous&gt;`、`&lt;pager:next&gt;`等,开发者只需在JSP页面中引入这些标签,就可以快速构建出具有分页功能的列表页面。...

    pager-taglib-2.0

    "pager-taglib-2.0" 是一个特定的Taglib库,专为分页设计,它简化了在JSP中实现分页的过程。这个库不仅提供了基础的分页功能,还可以根据项目需求定制分页样式和行为,例如,自定义每页显示的条目数量、页码的展示...

    pager-taglib分页jar包

    **标题解析:**"pager-taglib分页jar包"指的是一个专门为JavaServer Pages (JSP) 开发的分页库,它包含了一个名为`pager-taglib`的Java Archive (JAR) 文件。这个JAR包提供了自定义的JSP标签,帮助开发者在网页上...

    Pager-taglib页面分页示例

    本项目提供了一个简单的使用Pager-taglib的示例,包括了两种不同的分页样式:普通样式和谷歌样式。 **1. Pager-taglib介绍** Pager-taglib是由Java开发的开源项目,它提供了自定义的JSP标签来处理分页逻辑。开发者...

    pager-taglib-2.0.rar

    "pager-taglib-2.0" 是一个专为此目的设计的实用分页标记库,它能够帮助开发者快速构建出类似Google、Yahoo等知名网站的高质量分页效果。 **什么是Taglib** Taglib,全称JSP Tag Library,是JavaServer Pages(JSP...

    pager-taglib 分页扩展实例

    pager-taglib 是个很好的jsp分页标签,使用它结合jstl可以实现灵活的分页导航功能。在实际的开发中post方式的提交比较常见,本人做了一个比较通用的基于post方式的一个应用。主要实现一下功能: 1.添加输入跳转、每...

    pager-taglib源码

    这是pager-taglib的官方源码,但在采用官方的pager-taglib分页传输中文参数会出现乱码,所以我采用maven新建一个pager-taglib项目对pager-taglib的源码进行小小的改动,是他支持中文传输,更重要的是把源代码提供给...

    pager-taglib-2.0及使用方法

    Pager Taglib是Java Web开发中的一个强大工具,主要用于实现页面的分页功能。它提供了一组自定义的JSP标签,简化了在网页上创建分页链接的过程,使得开发者可以更加专注于业务逻辑,而不是分页的实现细节。Pager ...

    pager-taglib 分页框架+附带例子

    - `pg:first` 和 `pg:last`:这两个标签分别表示第一页和最后一页的链接。 - `pg:prev` 和 `pg:next`:用于生成上一页和下一页的链接。 - `pg:item`:可以用来遍历所有页码并生成对应的链接。 4. **使用示例** ...

    pager-taglib jar 和 tld 以及使用说明

    `pager-taglib`是一个用于实现分页的自定义标签库,它通过JSP标签来简化分页逻辑的编写。本篇文章将详细解释`pager-taglib.jar`和`tld`文件的用途,以及如何在项目中使用它们。 1. **什么是`pager-taglib.jar`?** ...

    pager-taglib.jar

    利用pager-taglib进行查询分页时需要添加该jar包:pager-taglib.jar

    pager-taglib中文乱码解决后的JAR包

    用pager-taglib进行分页时,如果出现中文参数,由于pager-taglib默认是用ISO8859-1编码后进行参数传递,故会出现乱码现象。本人下载源码后,将编码的语句注释掉,即不进行编码,解决了中文乱码问题。改写后的代码已...

    pager-taglib_jar

    `pager-taglib_jar`文件是一个包含这个标签库的JAR包,它是开发者在项目中引入`pager-taglib`功能所必需的。 `pager-taglib`的核心思想是将分页逻辑与显示逻辑分离,遵循MVC(Model-View-Controller)设计模式。...

    pager-taglib-ra2.0

    **标题解析:**"pager-taglib-ra2.0" 是一个特定版本的分页标签库,主要用于J2EE应用程序中的页面分页功能。这里的 "ra2.0" 指的是该库的版本号,可能是Release 2.0。 **描述分析:**描述中提到“内含jar”,意味着...

Global site tag (gtag.js) - Google Analytics