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

03-12-30 cute
有没有人能够谈论一下,Struct 分页显示方法。

现在找这个真是很难呀!。。。

shanmoshi
2004-01-03 12:05
我做的是很原始的方法,不知道有没有高手有很好的解决方法。

我的实现方法 + 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,就可以了,用起来蛮好。但是总觉得有点繁琐、表示层和业务层有些重叠。

wzbwambition
2004-01-07 17:00
struts分页实现起来有什么特殊么?

rs.absolute(page*number+1);

不行么?

shanmoshi
2004-01-08 10:31
晕,我想错了~struts和分页好像没有多少关系。。。。

shanmoshi
2004-01-08 10:38
原来是:Query.setMaxResults() and Query.setFirstResult() for query paging.

cute
2004-01-08 11:28
我现在已经解决此办法.. 感觉不错.. 用的是第三方组件...

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

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>

<p>

shanmoshi
2004-01-08 13:37
我用struts从来不用它的tag的,每个页面最多传一个值对象的集合,不知道这样好不好?

cute
2004-01-08 14:01
我想只要逻辑业务分得很清楚,二次维护很容易,系统很稳定 就可以了...

并不在于用的是什么技术..

shanmoshi
2004-01-12 09:16
这就是struts的目的来的

laoer
2004-01-13 11:20
Struts和分页没有必然的联系,在Struts中,只要把最后查出的数据集合传给JSP就可以了。

关于数据库的分页方法有很多,但绝对不赞成用rs数据滚动的方法,因为一次检索出大量的数据足以使系统down机!

我自己做的社区可以适应不同的数据库得分页,Struts构架!

http://www.laoer.com

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

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

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

zb1015
2004-02-01 14:20
struts和分页没有什么关系,只要在商业层中把数据放入list,传给jsp

分页的形式自己决定。

daivd.tao
2004-04-29 18:40
有没有具体的实现方法啊!我觉得你说得有道理啊!

猜你喜欢
2Go 1 2 下一页