smile开发类库——JSP分页标签

                      smile 开发类库—— JSP 分页标签

 

本文章将对 smile 中对 jsp 分页标签的支持进行一个详细的介绍:

 

首先来看一个简单的分页的例子:

 

Action 中的代码:

 

import org.smile.pager.jsptags.JspTagsPager;
 

 

 

 

public String queryAllUser() throws Exception{

      userService .queryAllUser( new JspTagsPager( request ));

      return "success" ;

} 
 

 

Dao 中的代码:

 

 

public PageModel queryAllUser(Pager pager) throws SQLException {

      StringBuffer sql= new StringBuffer( "select id,name,age   from Test where 1=1 " );

      String name=pager.getRequest().getParameter( "name" );

      if (name!= null &&! "" .equals(name.trim())){

        sql.append( " and name like '" +name+ "'" );

      }

      return PagerQueryUtils.queryPageSQL ( ds .getConnection(),sql.toString(),pager,Dialect. HSQL );

   } 
 

 

至于 action 中是怎么调用 dao 的在这里就没有必要详细描述了。

 

Jsp 中的主要代码

 

 

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "http://smile.org/jsp/jstl/tag/pager" prefix = "pg" %>
< table >
    < tr >< td > ID </ td >< td > 名称 </ td >< td > 年龄 </ td ></ tr >
    < c:forEach items = "${pageModel.rows} " var = "v" >
        < tr >
           < td > ${v.id } </ td >< td > ${v.name } </ td >< td > ${v.age } </ td >
           </ tr >
    </ c:forEach >
    </ table >
      < pg:pager url = "${path} /jsp/queryAllUserAction.do " maxPageItems = "${pageModel.size} " items = "${pageModel.total} ">
       每页显示 < pg:sizes /> 条
       < pg:common />
      </ pg:pager > 
 

 

 

 

结果:

 

 

 

 

 

现在来分析一下这个例子:

 

 

JspTagsPager是实现接口

 

package org.smile.pager;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.smile.db.PageModel;
/**
 * 分页参数
 * @author strive
 *
 */
public interface Pager {
	public HttpServletRequest getRequest();
	public int getPage();
	public int getSize();
	public void commitResult(PageModel pageModel);
	public Map getParameterMap();
}

 

   这里我使用的数据库是HSQL 所以数据查询的方言指定Dialect.HSQL;

 

return PagerQueryUtils.queryPageSQL ( ds .getConnection(),sql.toString(),pager,Dialect. HSQL );

 

    JspTagsPager只是指定了一个request,所以此查询的每页显示的数据也是跟据request中的参数改变的

 

userService .queryAllUser( new JspTagsPager( request ));

    如果不想让每页显示的条数随着request中提交参数改变 ,那么就为它指定一个每页显示条数,那么就使用:

 

userService .queryAllUser( new JspTagsPager( request ,20));

 

   <pg:common /> 是提供了一个通用的分页工具条 :

 

   可以通过参数来配置哪此是要显示的内容(此例子的结果是显示了所有的内容)

   参数有以下几个:

 

 

/**
	 * 是否存在首页和末页
	 */
	private boolean hasFirstLast=true;
	/**
	 * 是否存在前一页和后一页
	 */
	private boolean hasPrevNext=true;
	/**
	 * 是否存在页码
	 */
	private boolean hasPages=true;
	/**
	 * 第一个页面、最后一个页码 与中间页面集合 的省略间距 
	 */
	private int omitCount=0;
	/**
	 * 是否存在第一个页码和最后一个页码
	 */
	private boolean hasPageFirstLast=true;
	/**
	 * 是否存在详细信息
	 */
	private boolean hasDescript=true;
	
	private String firstHtml="首页";
	
	private String lastHtml="末页";
	
	private String prevHtml="上一页";
	
	private String nextHtml="下一页";
	
	private String currentHtml="<font color=\"red\">{0}</font>";
	
	private String description="  当前是{0}/{1}页 共{2}条数据 每页显示{3}条 当前显示第{4}至第{5}条";
	/**
	 * 是否动态隐藏 首页、前一页 ……
	 */
	private boolean dynamicHide=false;

 

   比如 要让首页显示的是一个图片,而不是文字 刚可以 :

 

 

<pg:common firstHtml="<img src='${path}/images/table_buttom_first.gif'/>" />

 

   这样就可以把首页这个链接变成一个图片了。

 

   如果不要显示首页和末页的链接:

<pg:common hasFirstLast="false" />

 

   设置descript 来改变描述文字:

 

<pg:common descript="total:{2}  show{4} to {5}" />

 

 

   可以通过参数设置,和多种标签灵活运用,可以构建出自己想要的分页条。

 

  当然我们还可以不使用common这个标签而使用定制页面:

 

<pg:pager url="${path} /jsp/queryAllUserAction.do" maxPageItems="${pageModel.size}" items="${pageModel.total}" export="currentPageNumber=pageNumber" maxIndexPages="7">
						<pg:first>
							<a href="${pageUrl}">首页</a>
						</pg:first>
						<pg:prev>
							<a href="${pageUrl }"><img src="${path}




/images/tzgg_page_left.gif" alt="前一页" /></a>
						</pg:prev>
						<pg:pageFirst>
							<a href="${pageUrl}">${pageNumber }</a>...
						</pg:pageFirst>
						<pg:pages>
							<c:choose>
								<c:when test="${currentPageNumber eq pageNumber }">
								<font color="red">${pageNumber }</font>
								</c:when>
								<c:otherwise>
									<a href="${pageUrl }">${pageNumber }</a>
								</c:otherwise>
							</c:choose>
						</pg:pages>
						<pg:pageLast >
							...<a href="${pageUrl }">${pageNumber }</a>
						</pg:pageLast>
						<pg:next>
							<a href="${pageUrl }"><img src="${path}



/images/tzgg_page_right.gif" alt="后一页" /></a>
						</pg:next>
						<pg:last>
							<a href="${pageUrl }">尾页</a>
						</pg:last>
						       当前是第 ${pageModel.page}/${pageModel.totalPages } 页 共 ${pageModel.totals} 条数据
						    
</pg:pager>

 

    有时候我们需求传递一些查询参数到后台,可以使用 <pg:param /> 和<pa:params /> 标签来实现

 

<pg:pager url="${path} /jsp/queryAllUserAction.do" maxPageItems="${pageModel.size}" items="${pageModel.total}">
		<pg:param name="name" value="${name}"/>
		<pg:common />
</pg:pager>
 

   或者

 

<pg:pager url="${path} /jsp/queryAllUserAction.do" maxPageItems="${pageModel.size}" items="${pageModel.total}">
        <pg:params paramMap="${queryParam}"/>
        <pg:common />
    </pg:pager>
 
queryParam  是一个封闭了查询参数的map 如 {name=胡,age=14}

  
【smile-1.0.jar下载】http://hzs0502030128.iteye.com/blog/1471505

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值