`
log_cd
  • 浏览: 1090110 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

重定义wicket分页组件PagingNavigator

阅读更多
1.Navigator.java
package com.logcd.wicket.list;

import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigation;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.model.LoadableDetachableModel;

public class Navigator extends PagingNavigator {

	private static final long serialVersionUID = 1;

	public Navigator(String arg0, final IPageable arg1,final Integer total) {
		super(arg0, arg1);
		Link totallink = new Link("totallink") {
			private static final long serialVersionUID = 1;

			@Override
			public boolean isEnabled() {
				return arg1.getPageCount() - 1 > 0;
			}

			@Override
			public void onClick() {
				arg1.setCurrentPage(arg1.getPageCount() - 1);
			}
		};
		totallink.add(new Label("totalcount", new LoadableDetachableModel() {
			private static final long serialVersionUID = 1;

			@Override
			protected Object load() {
				return String.valueOf(arg1.getPageCount());
			}
		}));
		this.add(totallink);
		this.add(new Label("total",total.toString()));
	}

	public Navigator(String arg0, final IPageable arg1,
			IPagingLabelProvider arg2,final Integer total) {
		super(arg0, arg1, arg2);
		Link totallink = new Link("totallink") {
			private static final long serialVersionUID = 1;

			@Override
			public boolean isEnabled() {
				return arg1.getPageCount() - 1 > 0;
			}

			@Override
			public void onClick() {
				arg1.setCurrentPage(arg1.getPageCount() - 1);
			}
		};
		totallink.add(new Label("totalcount", new LoadableDetachableModel() {
			private static final long serialVersionUID = 1;

			@Override
			protected Object load() {
				return String.valueOf(arg1.getPageCount());
			}
		}));
		this.add(totallink);
		this.add(new Label("total",total.toString()));
	}

	@Override
	protected PagingNavigation newNavigation(IPageable arg0,
			IPagingLabelProvider arg1) {
		return new PagingSetting("navigation", arg0, arg1, this);
	}

}


2.PagingSetting.java:用于,显示控制
package com.logcd.wicket.list;

import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigation;

public class PagingSetting extends PagingNavigation {

	private static final long serialVersionUID = 1;

	@SuppressWarnings("unused")
	private IPageable arg1 = null;

	private Navigator style = null;

	public PagingSetting(String arg0, IPageable arg1, IPagingLabelProvider arg2,
			Navigator style) {
		super(arg0, arg1, arg2);
		this.arg1 = arg1;
		this.style = style;
		this.setViewSize(5);
	}

	@Override
	protected void onModelChanged() {
		super.onModelChanged();
		style.get("first").setVisible(true);
		style.get("prev").setVisible(true);
		style.get("next").setVisible(true);
		style.get("last").setVisible(true);
		if (arg1.getCurrentPage() < 2) {
			style.get("first").setVisible(false);
		}
		if (arg1.getCurrentPage() < 1) {
			style.get("prev").setVisible(false);
		}
		if (arg1.getCurrentPage() > arg1.getPageCount() - 2) {
			style.get("next").setVisible(false);
		}
		if (arg1.getCurrentPage() > arg1.getPageCount() - 3) {
			style.get("last").setVisible(false);
		}
	}
}



3.Navigator.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link type="text/css" rel="stylesheet" href="styles/wicket.css"></link>
<link type="text/css" rel="stylesheet" href="styles/office.css"></link>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
</head>
<body>
	<table border="0" cellspacing="0" cellpadding="0">
		  <tr>
			<td align="center" valign="middle">
			<wicket:panel>
			  <a wicket:id="first" class="text">首页</a>
			  
			   <a wicket:id="prev" class="text">上一页</a>  
			  
			  <span wicket:id="navigation">&nbsp; <a wicket:id="pageLink"
			    href="#"><span wicket:id="pageNumber" class="text">0</span></a> </span>
			  
			    <a wicket:id="next" class="text">下一页</a> 
			  
			  <a wicket:id="last" class="text">尾页</a>
			    
		    	&nbsp;&nbsp;总页数:<a wicket:id="totallink" href="#"><span
			    wicket:id="totalcount">0</span></a>&nbsp;页&nbsp;&nbsp; 
			    总记录数:<span wicket:id="total">0</span> 条&nbsp;
			</wicket:panel>
			</td>
		</tr>
	</table>
</body>
</html>


4.应用
(1)java:
form.add(new Navigator("navigator", listView2,listView2.getList().size()));

(2)html:
<style type="text/css">
<!--
    i,em{
    	font-style: normal;
    	color: #CCCCCC;
    }
    #datNav{
	border:1px solid #8C9EBF;
         width:100%;
	table-layout:fixed;
	line-height: 20px;
	background-color:#F4F8FF;	
    }	    
-->
</style>

<div class="datNav"><span wicket:id ="navigator">这里显示分页操作</span></div>

分享到:
评论
6 楼 log_cd 2009-02-21  
Tapestry和wicket的分页组件好像都有这个问题,最好还是自定义分页组件,组件不跟数据关联,其记录的是分页查询时要用到的参数。
5 楼 ristaju 2009-02-19  
请教你啊,用dataview+ListDataProvider做分页,怎么才能做到每页显示几条数据就查几条数据,翻页的时候仍旧从上一页的最后一条记录的索引开始往下查?
避免每次都查出表里所有的数据啊
4 楼 log_cd 2009-02-17  
使用PageableListView,可以分页
3 楼 ristaju 2009-02-17  
log_cd 写道

不能,排序应该在显示数据的list和table上去考虑吧

哦,wicket里面的分页都是假分页,怎么才能实现真分页啊,通过DAO载入数据
2 楼 log_cd 2009-02-17  
不能,排序应该在显示数据的list和table上去考虑吧
1 楼 ristaju 2009-02-16  
这个分页能解决排序问题吗?

相关推荐

    Wicket 8.X开发文档(中文翻译+英文原版)

    Wicket与其他面向组件的框架相比 威克特说“你好世界!” 4.1。Wicket分发和模块 4.2。Wicket应用程序的配置 4.3。HomePage类 4.4。Wicket链接 4.5。摘要 5. Wicket作为页面布局管理器 5.1。页眉,页脚,左侧菜单,...

    wicket-js:wicket-js 使在 Wicket 组件和行为中编写和处理自定义 JavaScript 和 jQuery 变得容易

    它有助于将 Wicket Ajax Behavior 侦听器与实际客户端 UI 功能分开,同时保持与 Wicket 组件的耦合。 它提供了一个(基本的),允许您在 Java 中构建 JavaScript 和 jQuery 表达式。 例子 使用 wicket-js,您可以...

    wicket指南

    wicket开发指南,wicket 新型的web开发框架,现以能无逢支持jsr168/286

    WIComponents:apache wicket的UI组件-开源

    “ wicket组件”项目是apache wicket网络框架的组件库。 wicket组件引用了桌面应用程序的经典组件库(例如Microsoft Foundation Classes,QT Library或wxWindows),为wicket Web应用程序提供了图形用户界面组件。 ...

    Wicket开发指南.pdf

    Wicket开发指南 Wicket开发指南 Wicket开发指南

    apache-wicket

    Wicket has been around since 2004 and it has been an Apache project since 2007. During these years it has proved to be a solid and valuable solution for building enterprise web applications. Wicket ...

    wicket国际化例子

    wicket国际化例子 含有wicket:message StringResourceModel 等读取properties资源文件的代码示例

    wicket 基础知识培训

    wicket 基础知识培训,主要是讲解wicket入门知识,通过和struts比较来进行讲解。

    wicket 开发指南 doc

    wicket 开发指南 比较全面的介绍wicket的使用

    wicket 6.x api.chm wicket帮助文档

    wicket 6.x api.chm wicket帮助文档

    wicket_mvn库

    wicket编译所需的maven库,搬运

    wicket-menu-6.5.0.zip

    wicket-menu.zip,Wicket菜单

    wicket文档

    wicket学习文档

    wicket:Apache Wicket-基于组件的Java Web框架

    Apache Wicket是一个开源的,基于Java,基于组件的Web应用程序框架。 通过适当的标记/逻辑分离,POJO数据模型以及令人耳目一新的XML缺乏,Apache Wicket使开发Web应用程序变得简单而又愉快。 交换样板,复杂的调试...

    wicket1.4.7中的jar包

    从wicket官网中下载的wicket1.4.7中jar包,对于编写wicket相关的程序有所需要的朋友可以下载

    Wicket 入门

    Wicket 入门,以及Eclipse里建立project

    wicket-examples

    wicket-examples 示例 wicket-examples 示例 wicket-examples 示例 wicket-examples 示例

    Wicket.pdf(Wicket开发指南)

    Wicket,有一个优秀的Web框架。和Struts和Webwork类似的Java WEB开发框架。优点在于对HTML和业务代码进行了有效的分离(流行的WEB框架大多如此)。基于规则的配置(有效减少了XML配置文件的使用,与Spring相比,...

    wicket例子和开发指南

    wicket例子和开发指南,指南为PDF文档,例子为wicket自带例子。

    Wicket开发指南

    Wicket开发指南.pdf Wicket开发指南.pdf Wicket开发指南.pdfWicket开发指南.pdfWicket开发指南.pdf

Global site tag (gtag.js) - Google Analytics