`
log_cd
  • 浏览: 1098514 次
  • 性别: 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指南

    7. **分页与排序**:Wicket 提供了`PagingNavigator`和`SortableDataProvider`来支持数据的分页和排序。 **三、Wicket 组件** 1. **基础组件**:包括`Label`(显示文本)、`Link`(点击链接)、`Form`(表单提交)...

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

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

    wicket+spring

    1. **组件驱动**:Wicket的组件可以绑定到模型,自动处理渲染和更新,这使得开发者可以专注于业务逻辑,而不是页面的呈现细节。 2. **无状态与有状态组件**:Wicket组件可以是有状态的(Stateful),这意味着它们会...

    wicket开发指南 pdf

    Wicket 是一个开源的、基于Java的Web应用程序框架,它以其组件化、模型-视图-控制器(MVC)架构和轻量级特性而受到开发者们的青睐。本指南将深入探讨Wicket的核心概念、工作原理以及如何有效地利用它来构建动态、...

    wicket例子和开发指南

    2. 表格和列表:如何展示动态数据,如表格组件的使用和数据排序、分页。 3. 表单处理示例:包含验证、提交等完整流程的表单。 4. AJAX应用:使用Wicket的AJAX功能实现动态更新。 5. URL和导航实例:演示如何设置和...

    wicket简单实例

    Wicket是一款开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例,你可以深入学习Wicket的...

    wicket 官方JAVA教程

    Wicket的组件库非常丰富,包含大量预建的UI组件,同时也支持自定义组件开发,满足各种需求。此外,还可以通过插件和扩展来增强框架的功能。 8. **源码阅读** 作为开源项目,Wicket的源码对于开发者来说是一份宝贵...

    apacke-wicket-mvn编译

    Apache Wicket是一款开源的Java Web应用框架,它以组件为基础,提供了丰富的功能来帮助开发者创建动态、交互式的Web应用程序。 【描述】:“自用,在线转移资源,使用带mvn插件的eclipse直接导入即可。”这说明这个...

    Wicket开发指南-简体版

    - **完整的Wicket继承体系**:展示了Wicket组件间的层次关系。 **4.4 Wicket事件驱动** - **事件驱动结构**:介绍了Wicket如何通过事件驱动来处理用户交互。 - **如何调用Listener**:解释了监听器在处理事件中的...

    wicket-menu-6.5.0.zip

    总结起来,"wicket-menu-6.5.0.zip"是一个展示Wicket框架构建菜单系统的实例,它涵盖了菜单组件的创建、数据绑定、动态更新以及用户交互等方面的知识,对于想要深入了解Wicket或者提高Web应用开发能力的开发者来说,...

    Wicket.pdf(Wicket开发指南)

    - **组件化:** Wicket 强调组件的概念,将 Web 页面视为组件树,每个组件负责显示部分视图或处理用户交互。 - **HTML 和业务逻辑分离:** Wicket 允许开发者使用标准 HTML 来构建界面,而将复杂的业务逻辑封装在 ...

    wicket_mvn库

    在 Wicket 开发中,常见的 Maven 插件包括 Wicket-Tester(用于单元测试 Wicket 组件)和 Wicket-Eclipse-Plugin(Eclipse IDE 的插件,提供代码提示和调试支持)。 6. **mvn_tmp 文件**: 这个文件名可能是临时文件...

    Wicket1.40.war包+开发指南.rar

    Wicket是一款开源的Java Web应用程序框架,它强调了组件化和模型-视图-控制器(MVC)的设计模式。Wicket 1.4.0是该框架的一个版本,提供了丰富的功能和改进,使得Web开发更为简便。在本篇文章中,我们将深入探讨...

    wicket 基础知识培训

    Wicket的入门知识包括了解其组件体系结构、如何创建和绑定组件、以及如何处理用户事件。开发者还需要理解Wicket的模型-视图-控制器(MVC)概念,虽然Wicket的实现方式略有不同,但它仍然遵循类似的模式。此外,学习...

    wicket相关书籍

    Apache Wicket 是一个开源的Java Web应用程序框架,它以其组件化的模型、强大的状态管理和低级别的浏览器依赖性而受到开发者的欢迎。Wicket 相关书籍是深入理解和掌握这个框架的重要资源,下面将针对这些书籍提供的...

    wicket文档

    通过定义可重用的组件,Wicket允许开发者减少重复代码,提高代码的可维护性和可读性。 - **1.4.6 支持表单数据验证** Wicket提供了内置的表单验证功能,可以轻松地对用户输入进行校验。 - **1.4.7 Session类型...

Global site tag (gtag.js) - Google Analytics