大部分情况下我们需要实现分页效果的数据源都是数据库,对于这种情况我们可以用游标来控制输出的记录数,但是如果数据源不是数据库,那就需要我们自己手工写一个方法去实现。
现在情况是这样:
我要的数据在一个XML文件中,我通过java解析数据到一个Map中,然后我要在jsp中显示这个Map中的数据,每页显示10条数据,代码如下:
/**
* jssay jiang
* since 2009-10-18
* @param currentPage
* @param allRecordsMap
* @param maxRecords
* @return
*/
public Map getSubRecords(int currentPage, int maxRecords, Map allRecordsMap){
int count = 0;
int item = 0;
Map subRecordsMap = new LinkedHashMap();
Set set = allRecordsMap.keySet();
String key = null;
String value = null;
for(Iterator iter = set.iterator();iter.hasNext();){
if(count == (currentPage-1) * maxRecords){
if(item != maxRecords){
key = (String)iter.next();
value = (String)allRecordsMap.get(key);
subRecordsMap.put(key, value);
}else{
item++;
}
}else{
//move to next record
iter.next();
count++;
}
}
return subRecordsMap;
}
在以上这段代码中,最值得注意的就是iter.next();这句,它就相当于数据库中的游标指向下一条记录,少了它取到的始终是头10条记录。具体在实现分页的时候只要将当前页面数传给这个函数就可以了,剩下的就很easy了!
本Blog文章除特别声明之外皆为原创文章,欢迎转载,转载请注明: 转载自JSSAY'S BLOG