我在ClassListForm中写到:
MultiPages:pager actionFormName="classListForm" page="/classesListAction.do?count=5&w=(class_id<1000)&o=(class_id desc)"
但运行后,无法自动显示分页信息,请教如何解决?????
谢谢彭老师百忙中多多指导!
另外,jdonframework的open sources哪里能得到多多学习一下。
多谢!
我在ClassListForm中写到:
MultiPages:pager actionFormName="classListForm" page="/classesListAction.do?count=5&w=(class_id<1000)&o=(class_id desc)"
但运行后,无法自动显示分页信息,请教如何解决?????
谢谢彭老师百忙中多多指导!
另外,jdonframework的open sources哪里能得到多多学习一下。
多谢!
你在page中classesListAction.do只要写查询条件即可,count其他信息无需写了,只要classesListAction.java能够接受你的参数&w=(class_id<1000)&o=(class_id desc)就能正常输出,你可以在classesListAction.java中在后台控制输出看看。
实在不行,自己继承MultiPages标签做一个标签类,然后修改MultiPages.tld为你的新类即可。
谢谢,烦请彭老师您百忙中能具体的详细指导一下,或给个带条件参数的样例,多谢!!!!!
我在ClassListForm中这样写到(没有加count):
MultiPages:pager actionFormName="classListForm" page="/classesListAction.do?w=(class_id<1000)&o=(class_id desc)"
我在struts-config.xml相关部分中这样写到(加了count):
global-forwards
forward name="classes" path="/classesListAction.do?count=5" /
。。。
/global-forwards
action-mappings
。。。。
action name="classesActionForm" path="/classesSeeAction" type="com.jdon.strutsutil.ModelSaveAction"
scope="request" validate="true" input="/classesQr.jsp"
forward name="success" path="/classesListAction.do?count=5" /
forward name="failure" path="/classesListAction.do?count=5" /
/action
。。。。
/action-mappings
我在网址调用时这样写到(加了count和start):
http://localhost:8080/jxtWeb/classesListAction.do?w=(class_id<1000)&o=(school_id)&count=5&start=15
结果是这样的(数据库实际有13条纪录):
1:在网址调用时不加&count=5&start=15时,无分页信息,显示所有13条纪录;
2:在网址调用时加&count=5&start=0时,无分页信息,显示5条,分页部分仅显示1,而且无任何其他信息显示及连接;
3:在网址调用时加&count=5&start=5时,显示5条,分页部分仅显示[上页 ] 1 2 ;
其中[上页]连接:
1连接:[url=http://localhost:8080/jxtWeb/classesListAction.do?w=(class_id<1000)&o=(school_id)&count=5&start=0]
2无连接;(注:上页和1连接相同)
4:在网址调用时加&count=5&start=10时,显示3条,分页部分仅显示[上页 ] 1 2 3 ;
其中[上页]连接:
1连接:[url=http://localhost:8080/jxtWeb/classesListAction.do?w=(class_id<1000)&o=(school_id)&count=5&start=0]
2连接:[/url][url=http://localhost:8080/jxtWeb/classesListAction.do?w=(class_id<1000)&o=(school_id)&count=5&start=5]
3无连接
问题是:
1、start参数我只能写一次,值该写多少也不知道,要不就得知道总记录数和count值,在页面里算出来,不能自动跟出来;
2、关键是在上述(4:)项时我点击2连接后,分页信息部分就同(3:)项结果,无[下页]等正常分页信息;
3、如果去掉条件参数(w=(class_id<1000)&o=(school_id)),一切正常,可实际我需要这些参数。
麻烦彭老师您百忙中给多多指教,帮帮忙解决一下这些问题。
多谢!多谢!
>1:在网址调用时不加&count=5&start=15时,无分页信息,显示所有13条纪录;
不加,相当于count=20&start=0进行调用,所以你的13条小于20,就全部显示。
>2:在网址调用时加&count=5&start=0时,无分页信息,显示5条,分页部分仅显示1,而且无任何其他信息显示及连接;
出现这个情况,可能是你的Dao中关于查询select count(1)的查询语句有误。
>3:在网址调用时加&count=5&start=5时,显示5条,分页部分仅显示[上页 ] 1 2 ;
在当前页是没有连接的,所以,&count=5&start=5表示从查询结果的第5条开始,显示5个,这是第2页。
>4:在网址调用时加&count=5&start=10时,显示3条,分页部分仅显示[上页 ] 1 2 3 ;
这是第3页了。
总体来说,现象正常,分页出现问题,关键是DAO的SQL语句,你检查一下,或者贴出来看一下,或你自己验证一下。
String GET_ALL_ITEMS = "select class_id from CLASS ";
return pageIteratorSolverOfUser.getDatas("", GET_ALL_ITEMS_ALLCOUNT,
GET_ALL_ITEMS, start, count);
}
public PageIterator getClassessCon(int start, int count, String con,
String order) throws Exception {
String GET_ALL_ITEMS_ALLCOUNT = "select count(1) from CLASS where "
+ con + " order by " + order;
String GET_ALL_ITEMS = "select class_id from CLASS where " + con
+ " order by " + order;
return pageIteratorSolverOfUser.getDatas("", GET_ALL_ITEMS_ALLCOUNT,
GET_ALL_ITEMS, start, count);
}
相应的listAction里是这样写的
public PageIterator getPageIterator(HttpServletRequest request,
int start, int count) {
PageIterator pageIterator = null;
String con,order;
try {
TestService testService = (TestService) WebAppUtil.getService(
"testService", request);
con = request.getParameter("w");
con = con.substring(1,con.length()-1);
//if (con1.toUpperCase().equalsIgnoreCase("ALL"))
// con1 = "1+1";
order = request.getParameter("o");
order = order.substring(1,order.length()-1);
pageIterator = testService.getAllClassessCon(start, count, con,order);
} catch (Exception ex) {
logger.error(ex);
}
return pageIterator;
}
服务里(testservice)是这样写的
。。。
public PageIterator getAllClassess(int start, int count);
public PageIterator getAllClassessCon(int start, int count,String con,String order);
服务实现里(TestServicePOJOImp)是这样写的
public PageIterator getAllClassess(int start, int count) {
PageIterator pageIterator = new PageIterator(PageIterator.EMPTY, 0,
false);
try {
pageIterator = jdbcDao.getClassess(start, count);
} catch (Exception ex) {
logger.error(ex);
}
return pageIterator;
}
public PageIterator getAllClassessCon(int start, int count, String con,String order) {
PageIterator pageIterator = new PageIterator(PageIterator.EMPTY, 0,
false);
try {
pageIterator = jdbcDao.getClassessCon(start, count, con,order);
} catch (Exception ex) {
logger.error(ex);
}
return pageIterator;
}
有问题,应该是 where con=? 没有问号。
这条语句我有点不太明白该怎么写:
按照我原来的:
public PageIterator getClassessCon(int start, int count, String con,
String order) throws Exception {
String GET_ALL_ITEMS_ALLCOUNT = "select count(1) from CLASS where "
+ con + " order by " + order;
String GET_ALL_ITEMS = "select class_id from CLASS where " + con
+ " order by " + order;
return pageIteratorSolverOfUser.getDatas("", GET_ALL_ITEMS_ALLCOUNT,
GET_ALL_ITEMS, start, count);
}
调用getClassessCon(int start, int count, String con,
String order)时,con的值如为class_id<1000 order的值为class_id desc这样的话
String GET_ALL_ITEMS = "select class_id from CLASS where " + con
+ " order by " + order;
就变为:String GET_ALL_ITEMS = "select class_id from CLASS where " + "class_id<1000"
+ " order by " + "class_id desc";
也即:
String GET_ALL_ITEMS = "select class_id from CLASS where class_id<1000 order by class_id desc";
我不太清楚 有问题,应该是 where con=? 没有问号。该怎么处理?