如何调整wicket的PagingNavigator的html输出

这是默认模板:

<wicket:panel>
	<a wicket:id="first" class="first">&lt;&lt;</a>
	<a wicket:id="prev" class="prev">&lt;</a>
	<span wicket:id="navigation" class="goto">
		<a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
	</span>
	<a wicket:id="next" class="next">&gt;</a>
	<a wicket:id="last" class="last">&gt;&gt;</a>
</wicket:panel>

当然最外围的tag由该组件的模板决定。比如外围用div:

<div wicket:id="mypaginator"></div>

现在假设需要purecss样式的pagingNavigator,它的html如下:

<ul class="pure-paginator">
    <li><a class="pure-button prev" href="#">«</a></li>
    <li><a class="pure-button" href="#">1</a></li>
    <li><a class="pure-button pure-button-active" href="#">2</a></li>
    <li><a class="pure-button" href="#">3</a></li>
    <li><a class="pure-button" href="#">4</a></li>
    <li><a class="pure-button" href="#">5</a></li>
    <li><a class="pure-button next" href="#">»</a></li>
</ul>

可见两者的差别还是不少。让我们看看可能的方法:

1、新建一个类,继承PagingNavigator。

比如类名称是PagingNavigator,然后建立对应的模板文件PagingNavigator.html,内容如下:

<ul class="pure-paginator">
    <li><a wicket:id="first" class="pure-button first" href="#">«</a></li>
    <li><a wicket:id="prev" class="pure-button prev" href="#">«</a></li>
    <li wicket:id="navigation"><a wicket:id="pageLink" class="pure-button" href="#"><wicket:container wicket:id="pageNumber"></wicket:container></a></li>
    <li><a wicket:id="next" class="pure-button next" href="#">»</a></li>
    <li><a wicket:id="last" class="pure-button last" href="#">»</a></li>
</ul>

这样子画出来的PagingNavigator的就是purecss样式的。但是还需要完善,当前页的样式,没有最后一页的时候按钮应该disabled。也就是说根据当前页的情况需要添加pure-button-disabled,或者pure-button-active样式。

为了达成这个功能,我们需要更深的探究PagingNavigator类,看看哪里可以实现这个功能。

对照上面的模板,其中wicket:id="navigation"对应的是PagingNavigation组件,其中有一个方法是:

@Override
	protected void populateItem(final LoopItem loopItem)
	{
		// Get the index of page this link shall point to
		final long pageIndex = getStartIndex() + loopItem.getIndex();

		// Add a page link pointing to the page
		final AbstractLink link = newPagingNavigationLink("pageLink", pageable, pageIndex);
		link.add(new TitleAppender(pageIndex));
		loopItem.add(link);

		// Add a page number label to the list which is enclosed by the link
		String label = "";
		if (labelProvider != null)
		{
			label = labelProvider.getPageLabel(pageIndex);
		}
		else
		{
			label = String.valueOf(pageIndex + 1);
		}
		link.add(new Label("pageNumber", label));
	}

其中TitleAppender用来添加link的title属性,这样鼠标移到上面的时候就会提示,比如goto 2 page等等。接下来是label,就是pageNumber对应的组件。

可以通过复写这个方法,根据情况对label进行修饰(AttributeModifier),最终达到需要的效果。

时间: 2024-08-30 00:18:36

如何调整wicket的PagingNavigator的html输出的相关文章

调整wicket DataTable的表格输出html

方法1: 继承DefaultDataTable,并且提供自己的html模板. 方法2: 继承DefaultDataTable,在构造函数中添加AttributeModifier,这样不用提供html模板,模板自动继承自DefaultDataTable.html 关于Odd,Even.也就是表格提供斑马效果,可以复写DefaultDataTable的newRowItem方法: @Override protected Item<T> newRowItem(final String id, fina

个性化wicket的pagingnavigator

让navigator按自己的要求呈现,可以作为wicket入门练习的好例子,比如看起来是bootstrap的pager. 让我们从wicket内置的PagingNavigation开始,通过override PagingNavigation 的 ??populateItem?? 方法更改pagingnavigation的外观.  protected void populateItem(LoopItem loopItem)  {         final int page = loopItem.

C++图像处理 -- 图像色阶调整

阅读提示:     <C++图像处理>系列以代码清晰,可读性为主,全部使用C++代码.     <Delphi图像处理>系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM.     尽可能保持二者内容一致,可相互对照. 本文代码必须包括<C++图像处理 -- 数据类型及公用函数>文章中的BmpData.h头文件. 在Photoshop中,图像色阶调整应用很广泛,本文介绍的图像色阶调整过程与Photoshop处理效果基本一致. Photoshop的色阶调整分

信号调理-电平调整

信号调理是将输出的数字信号进行调理使之符合后续接口处理.一般为电平信号,输入信号应在A/D的一半一下.模拟与数字接口一般要经过信号的隔离(变压器的磁隔离和光耦的光隔离)-信号的预处理-去除无用信号(滤波).信号调理分为4种类型:电平调整 线性化 信号的新式变换 滤波和阻抗匹配. 电平调整:要根据传感器的输出电平范围和采集端的电平范围去顶放大倍数和电路,并保留一定余量. 1 无源电平调整:一般通过分压电路实现(分压电阻的精度要求) 2 有源电平调整:以放大器为核心的电平调整(理想运放的特性,单端输

图示详解BERT模型的输入与输出

一.BERT整体结构 BERT主要用了Transformer的Encoder,而没有用其Decoder,我想是因为BERT是一个预训练模型,只要学到其中语义关系即可,不需要去解码完成具体的任务.整体架构如下图: 多个Transformer Encoder一层一层地堆叠起来,就组装成了BERT了,在论文中,作者分别用12层和24层Transformer Encoder组装了两套BERT模型,两套模型的参数总数分别为110M和340M. 二.再次理解Transformer中的Attention机制.

php分页

第一个页面page.class.php(此页面相当于工具) <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 private $limit; //SQL语句使用limit从句,限制获取记录个数 private $uri; //自动获取url的请求地址 private $pageNum; //总页数 private $pag

11月3日下午数据库的封装和引用 数据的分页

一.数据库的封装和引用 之前写代码都是通过mysql取结果写的,这样写的缺点是每次要用数据时都需要写sql参数,并且要写很多份,而且当数据库换了,或者密码改了就需要修改每一个文件里的和mysql有关的参数,结果会很复杂.下面就把数据库的操作封装成一个类,每一次操作的时候去调用封装的类. 以后就用封装类的方法写,防止换数据库.换电脑.或者是放到服务器上以后直接从封装的类里面更改数据库名称,用户名.密码等.就不需要改页面里的内容了. 1.查询语句 第1步:建一个封装类的文件DBDA.class.ph

php分页查询

分页查询通过引用page.class.php分页工具,就好写多了: 1.首先要有显示的内容: <!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">

thinkphp ajax分页

临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: 复制代码 <?php namespace Fenye\libs; /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 private $limit; //SQL语句使用limit从句,限制获取记录个数 private $uri; //自动获取url的请求地址