问题:分页效果有了,可是分页中有的数据丢失,页面中都不显示,有的数据重复,几页都显示。
急求大虾帮助
这是pager类public class Pager {
private long totalRows;
private int pageSize;
private int currentPage;
private int totalPages;
private int startRow;
private String hql; public String getHql() {
return hql;
} public void setHql(String hql) {
this.hql = hql;
}
public void calRows(String hql) {
hql = "select count(*) " + hql;
} public Pager(long totalRows, int pageSize, String hql) {
this.totalRows = totalRows;
this.pageSize = pageSize;
this.hql = hql;
this.totalPages = (int) (totalRows / pageSize);
int mod = (int) (totalRows % pageSize);
if(mod > 0)
totalPages++;
this.currentPage = 1;
this.startRow = 0;
} public long getTotalRows() {
return totalRows;
} public void setTotalRows(long totalRows) {
this.totalRows = totalRows;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} public int getCurrentPage() {
return currentPage;
} public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
} public int getTotalPages() {
return totalPages;
} public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
} public int getStartRow() {
return startRow;
} public void setStartRow(int startRow) {
this.startRow = startRow;
}
public void first() {
this.currentPage = 1;
this.startRow = 0;
}
public void previous() {
if(currentPage != 1) {
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
}
public void next() {
if(currentPage < totalPages) {
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
public void refresh(int page) {
currentPage = page;
if(currentPage > totalPages) {
last();
}
}
public void toPage(int pageNum) {
if(pageNum < 1) {
first();
}
else if(pageNum > totalPages) {
last();
}
else {
currentPage = pageNum;
startRow = (currentPage - 1) * pageSize;
}
}}这是action中的分页方法 public String listAsset(){
String hql = "select asset.id,asset.name,user.realname from Assets asset,User user where asset.rsper=user.id";
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = new Pager(this.assetservice.count(hql),10,hql);
session.put("assetsPage", assetsPage);
assets = this.assetservice.list(assetsPage.getHql(), assetsPage.getStartRow(), assetsPage.getPageSize());
// assets = this.assetservice.list(Assets.class);
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String first(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.first();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String last(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.last();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String next(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.next();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String previous(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.previous();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String toPage(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.toPage(this.pageNum);
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}这是jsp页面 <tbody id="assetsTbody">
<s:iterator value="assets" status="stat">
<tr>
<td><s:checkbox name="delid" theme="simple" value="false" fieldValue="%{assets[#stat.index][0]}"/>
</td>
<td><s:property value="assets[#stat.index][0]"/>
</td>
<td><s:property value="assets[#stat.index][1]"/>
</td>
<td><s:property value="assets[#stat.index][2]"/>
</td>
<td><s:url id="view" action="viewAsset">
<s:param name="assetid"> %{assets[#stat.index][0]}</s:param>
</s:url> <s:a href="%{view}">查看</s:a></td>
<td><s:url id="delete" action="deleteAsset">
<s:param name="assetid"> %{assets[#stat.index][0]}</s:param>
</s:url> <s:a href="%{delete}">删除</s:a></td>
<td><s:url id="toModify" action="toModifyAsset">
<s:param name="assetid"> %{assets[#stat.index][0]}</s:param>
</s:url> <s:a href="%{toModify}">修改</s:a></td>
</tr>
</s:iterator>
</tbody>
</table>
<input type="button" value="全选" onClick="selectAll('delid')" />
<input type="button" value="反选" onClick="selectRverse('delid')" />
<input type="button" value="删除" onClick="delSelected('delid')" />
</s:form>
<br/>
<s:iterator value="assetsPage">
总记录数<s:property value="totalRows"/>
总页数<s:property value="totalPages"/>
当前页码<s:property value="currentPage"/>
<s:url id="first" action="first"></s:url>
<s:a href="%{first}">首页</s:a>
<s:url id="previous" action="previous"></s:url>
<s:a href="%{previous}">上一页</s:a>
<s:url id="next" action="next"></s:url>
<s:form action="toPage" namespace="/asset">
第<s:textfield name="pageNum" value="" cssStyle="width:30px"></s:textfield>页
<s:submit value="GO"></s:submit>
</s:form>
<s:a href="%{next}">下一页</s:a>
<s:url id="last" action="last"></s:url>
<s:a href="%{last}">末页</s:a>
</s:iterator>这是DAO中的内容 public List query(String queryString, int FirstResult, int MaxResult) {
Session session = this.getHibernateTemplate().getSessionFactory().openSession();
Transaction t = session.beginTransaction();
t.begin();
Query queryObject = session.createQuery(queryString);
queryObject.setFirstResult(FirstResult);
queryObject.setMaxResults(MaxResult);
List list = queryObject.list();
t.commit();
session.clear();
session.close();
return list;
急求大虾帮助
这是pager类public class Pager {
private long totalRows;
private int pageSize;
private int currentPage;
private int totalPages;
private int startRow;
private String hql; public String getHql() {
return hql;
} public void setHql(String hql) {
this.hql = hql;
}
public void calRows(String hql) {
hql = "select count(*) " + hql;
} public Pager(long totalRows, int pageSize, String hql) {
this.totalRows = totalRows;
this.pageSize = pageSize;
this.hql = hql;
this.totalPages = (int) (totalRows / pageSize);
int mod = (int) (totalRows % pageSize);
if(mod > 0)
totalPages++;
this.currentPage = 1;
this.startRow = 0;
} public long getTotalRows() {
return totalRows;
} public void setTotalRows(long totalRows) {
this.totalRows = totalRows;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} public int getCurrentPage() {
return currentPage;
} public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
} public int getTotalPages() {
return totalPages;
} public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
} public int getStartRow() {
return startRow;
} public void setStartRow(int startRow) {
this.startRow = startRow;
}
public void first() {
this.currentPage = 1;
this.startRow = 0;
}
public void previous() {
if(currentPage != 1) {
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
}
public void next() {
if(currentPage < totalPages) {
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
public void refresh(int page) {
currentPage = page;
if(currentPage > totalPages) {
last();
}
}
public void toPage(int pageNum) {
if(pageNum < 1) {
first();
}
else if(pageNum > totalPages) {
last();
}
else {
currentPage = pageNum;
startRow = (currentPage - 1) * pageSize;
}
}}这是action中的分页方法 public String listAsset(){
String hql = "select asset.id,asset.name,user.realname from Assets asset,User user where asset.rsper=user.id";
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = new Pager(this.assetservice.count(hql),10,hql);
session.put("assetsPage", assetsPage);
assets = this.assetservice.list(assetsPage.getHql(), assetsPage.getStartRow(), assetsPage.getPageSize());
// assets = this.assetservice.list(Assets.class);
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String first(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.first();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String last(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.last();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String next(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.next();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String previous(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.previous();
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}
@SuppressWarnings("unchecked")
public String toPage(){
try {
Map session = ActionContext.getContext().getSession();
this.assetsPage = (Pager) session.get("assetsPage");
assetsPage.toPage(this.pageNum);
session.put("assetsPage", assetsPage);
this.assets = this.assetservice.list(assetsPage.getHql(),assetsPage.getStartRow(),assetsPage.getPageSize());
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
}这是jsp页面 <tbody id="assetsTbody">
<s:iterator value="assets" status="stat">
<tr>
<td><s:checkbox name="delid" theme="simple" value="false" fieldValue="%{assets[#stat.index][0]}"/>
</td>
<td><s:property value="assets[#stat.index][0]"/>
</td>
<td><s:property value="assets[#stat.index][1]"/>
</td>
<td><s:property value="assets[#stat.index][2]"/>
</td>
<td><s:url id="view" action="viewAsset">
<s:param name="assetid"> %{assets[#stat.index][0]}</s:param>
</s:url> <s:a href="%{view}">查看</s:a></td>
<td><s:url id="delete" action="deleteAsset">
<s:param name="assetid"> %{assets[#stat.index][0]}</s:param>
</s:url> <s:a href="%{delete}">删除</s:a></td>
<td><s:url id="toModify" action="toModifyAsset">
<s:param name="assetid"> %{assets[#stat.index][0]}</s:param>
</s:url> <s:a href="%{toModify}">修改</s:a></td>
</tr>
</s:iterator>
</tbody>
</table>
<input type="button" value="全选" onClick="selectAll('delid')" />
<input type="button" value="反选" onClick="selectRverse('delid')" />
<input type="button" value="删除" onClick="delSelected('delid')" />
</s:form>
<br/>
<s:iterator value="assetsPage">
总记录数<s:property value="totalRows"/>
总页数<s:property value="totalPages"/>
当前页码<s:property value="currentPage"/>
<s:url id="first" action="first"></s:url>
<s:a href="%{first}">首页</s:a>
<s:url id="previous" action="previous"></s:url>
<s:a href="%{previous}">上一页</s:a>
<s:url id="next" action="next"></s:url>
<s:form action="toPage" namespace="/asset">
第<s:textfield name="pageNum" value="" cssStyle="width:30px"></s:textfield>页
<s:submit value="GO"></s:submit>
</s:form>
<s:a href="%{next}">下一页</s:a>
<s:url id="last" action="last"></s:url>
<s:a href="%{last}">末页</s:a>
</s:iterator>这是DAO中的内容 public List query(String queryString, int FirstResult, int MaxResult) {
Session session = this.getHibernateTemplate().getSessionFactory().openSession();
Transaction t = session.beginTransaction();
t.begin();
Query queryObject = session.createQuery(queryString);
queryObject.setFirstResult(FirstResult);
queryObject.setMaxResults(MaxResult);
List list = queryObject.list();
t.commit();
session.clear();
session.close();
return list;
public List findPaper(Integer pageNo ,Integer pageSize){//
//
}
通过session或request传值,这有个例子:public List getPage(int pageNo, int pageSize) {
Session session = this.getSession();
try {
Criteria c = session.createCriteria(TbT99.class);
int f = (pageNo - 1) * pageSize;
c.setFirstResult(f); //游标位置
c.setMaxResults(pageSize); //查询的条目数
return c.list();
} finally {
session.close();
}
}
public List getHqlPage(int pageNo, int pageSize) {
Session session = this.getSession();
try {
Query q = session.createQuery("from TbT99 order by tbId desc");
int f = (pageNo - 1) * pageSize;
q.setFirstResult(f); //游标位置
q.setMaxResults(pageSize); //查询的条目数
return q.list();
} finally {
session.close();
}
}
比如在控制台输出一个集合...
按照参数传递...分别打印结果看看........
PS:分页可以推荐楼主用displaytag........