有没有人能够谈论一下,Struct 分页显示方法。

有没有人能够谈论一下,Struct 分页显示方法。
现在找这个真是很难呀!。。。

我做的是很原始的方法,不知道有没有高手有很好的解决方法。
我的实现方法 + hibernate:
首先用request.getParamter() 或者 formbean取得要显示的page
DBAccess data = new DBhbnImpl(sessionFactory);
int resultCount = data.searchCount(columns,criteria, true);
在一个Action中,首先取得总数,然后按配置文件取得每一页的显示行数
比如12行,然后计算page是否合法,合法的话就取得了
c = data.search(columns, criteria, true, 12, page);
然后把po 转成DTO,封装成一个collection和同时转送总页数传给jsp,就可以了,用起来蛮好。但是总觉得有点繁琐、表示层和业务层有些重叠。

struts分页实现起来有什么特殊么?
rs.absolute(page*number+1);
不行么?

晕,我想错了~struts和分页好像没有多少关系。。。。

原来是:Query.setMaxResults() and Query.setFirstResult() for query paging.

我现在已经解决此办法.. 感觉不错.. 用的是第三方组件...

用起来还是满不错的.... 给大家一点参考...

http://jsptags.com/tags/navigation/pager/index.jsp



LoginAction :
=====================================

rs=db.getdb("select department_id,department_name,address,facility_code from tb_department");
RowSetDynaClass rsdc = new RowSetDynaClass(rs);
List ls=rsdc.getRows();
i=ls.size();
request.setAttribute(
"cute",rsdc.getRows());


}catch(Exception e){

request.setAttribute(
"request",flag+"-----------"+i);
}
request.setAttribute(
"all",new Integer(i));


====================================

转发页面...::
===================================
<%@page contentType=
"text/html;charset=GBK"%>
<%@ taglib uri=
"/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri=
"/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri=
"/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri=
"/WEB-INF/pager-taglib.tld" prefix="pg" %>
<%@ taglib uri=
"/WEB-INF/jstl/c.tld" prefix="c" %>
<bean:message key=
"cute.result"/>

<%
int all=((Integer)request.getAttribute(
"all")).intValue();//获取数据总数
//每页显示数量
int maxPageItems = 20;

int maxIndexPages = 10;

//items="200" 页面中的数字200 代表总数据条数
%>

<pg:pager
items=
"<%=all%>"
maxPageItems=
"<%= maxPageItems %>"
maxIndexPages=
"<%= maxIndexPages %>"
isOffset=
"<%= true %>"
export=
"offset,currentPageNumber=pageNumber"
scope=
"request">

<pg:index>z

<pg:first>
<a href=
"<%= pageUrl %>"><nobr>[ #<%= pageNumber %> 第一页 ]</nobr></a>
</pg:first>
<pg:skip pages=
"<%= -5 %>">
<a href=
"<%= pageUrl %>"><nobr></nobr></a>
</pg:skip>
<pg:prev>
<a href=
"<%= pageUrl %>"><nobr>[ #<%= pageNumber %> 《《 ]</nobr></a>
</pg:prev>
<pg:pages>
<a href=
"<%= pageUrl %>"><%= pageNumber %></a>
</pg:pages>
<pg:next>
<a href=
"<%= pageUrl %>"><nobr>[ 》》 #<%= pageNumber %> ]</nobr></a>
</pg:next>
<pg:skip pages=
"<%= 5 %>">
<a href=
"<%= pageUrl %>"><nobr></nobr></a>
</pg:skip>
<pg:last>
<a href=
"<%= pageUrl %>"><nobr>[ 最后一页 #<%= pageNumber %> ]</nobr></a>
</pg:last>

</pg:index>

<hr>





<table>
<tr>
<th>department_id</th>
<th>department_name</th>
<th>address</th>
<th>facility_code</th>
</tr>
<%
int i = offset.intValue();
int l=Math.min(i + maxPageItems, all);

%>
<logic:iterate name=
"cute" id="customer" offset="<%=i+""%>" length="<%=maxPageItems+""%>">
<tr>
<td>


<a href='login.do?id=<bean:write name=
"customer" property="department_id"/>'/>
<bean:write name=
"customer" property="department_id"/>

</a>



</td>
<td><bean:write name=
"customer" property="department_name"/></td>
<td><bean:write name=
"customer" property="address"/></td>
<td><bean:write name=
"customer" property="facility_code"/></td>
</tr>
</logic:iterate>
</table>
</pg:pager>

我用struts从来不用它的tag的,每个页面最多传一个值对象的集合,不知道这样好不好?

我想只要逻辑业务分得很清楚,二次维护很容易,系统很稳定 就可以了...
并不在于用的是什么技术..

这就是struts的目的来的

Struts和分页没有必然的联系,在Struts中,只要把最后查出的数据集合传给JSP就可以了。
关于数据库的分页方法有很多,但绝对不赞成用rs数据滚动的方法,因为一次检索出大量的数据足以使系统down机!
我自己做的社区可以适应不同的数据库得分页,Struts构架!
http://www.laoer.com

rs滚动,你是指rs.absolute()么?我用的经验此方法没问题,因为rs并不是象你想的那样把所有数据都取出来,而是从你absolute到的地方开始取,直到你指定的 个数,期间connection没有断,直到取完了数据,连接才会断,所以也不会down机,呵呵。

rs滚动,你是指rs.absolute()么?我用的经验此方法没问题,因为rs并不是象你想的那样把所有数据都取出来,而是从你absolute到的地方开始取,直到你指定的 个数,期间connection没有断,直到取完了数据,连接才会断,所以也不会down机,呵呵。

rs 滚动定位 只是在数据库中指针所在位置,并不代表所有数据已经读出。 我试过不会影响系统。。

struts和分页没有什么关系,只要在商业层中把数据放入list,传给jsp
分页的形式自己决定。

有没有具体的实现方法啊!我觉得你说得有道理啊!