使用struts2标签定制ajax版的分页组件

上一文中,我们介绍了如何使用page.jsp界面输出分页信息,那么针对于像动态表格,或者需要局部刷新的界面又如何处理呢。道理其实还是很简单,我们只需要按照需求让它按指定的动作进行即可以了。

具体的作法也很简单,我们只需要将所有的链接修改为一个点击函数就可以了,那么当点击链接时,具体界面怎么跳转,以及刷新哪个部分,这其实就与分页组件无关了。我们只需要将相应的链接传递给调用方,让调用方自行处理就行了,这样也可以保证分页组件的通用性。

在实现层面,原来的链接就是一个href链接,那么修改为ajax版之后,我们就将这个href链接当成一个参数传递给调用方,比如可以定义一个clickPage函数,然后把href传递给clickPage即可,当然,你也可以同时传递当前的页码,具体实现由需求决定。
简单参考代码如下所示:

<s:url id="goto"><s:param name="page.currentPage" value="1"/></s:url>
<s:a href="%{goto}" onclick="clickPage('' + this.href);return false;" title="首页"></s:a>

继续阅读“使用struts2标签定制ajax版的分页组件”

使用struts2开发通用分页组件

由于在使用struts2中经常碰到分页的场景,因此这里讲述一个如何使用通用jsp分页组件的界面,其中包括可使用代码和相应的原理。

这个组件写于5年前,不过现在还是可以使用的,简而言之,它使用了struts2中标签的url标签。简单介绍一下url标签的作用,附如下所示:

名称 必填 缺省 类型 描述
value false   Object/String value如果不提供就用当前action
action false   Object/String 用来生成url的action,如果没有则使用value
namespace false   Object/String 命名空间
id false   Object/String 该元素标识

仔细看url的介绍,其中有几个值值得注意,一是action及namespace和value值,如果不传就使用当前界面的请求值;另一个则是param属性,如果不写就使用当前界面的所有参数值,如果写了,就将设置了的进行覆盖。这里我们将这两个特性应用到我们的分页当中,就会发现这实际上就是专门为分页准备的,分页中,只需要变化分页参数,其它一切不变。

通过上面我们可以看出其中一个关键的参数,id值,文档上为如果id值不为null,而将相应的路径信息传递给id值,并将id值保存在上下文中。那么,我们在分页组件中就可以先定义这个id值,即某一页的链接,然后再将这个链接值传递到某一个a链接即可。

具体在实现上,我们肯定需要一个page对象,里面的属性大家都懂的,第几页,一页多少条,总记录数,然后就是根据这些参数处理是否有上一页,是否有下一页等。

那么,正式的代码即可如下所示,即如何输出首页:

<s:url id="goto"><s:param name="page.currentPage" value="1"/></s:url>
<s:a href="%{goto}" title="首页"></s:a>

继续阅读“使用struts2开发通用分页组件”