Code Bye

SSH分页查询问题

我是一个从C#转java的初学者,我在做SSH框架的时候遇到个分页查询的问题。具体算是数据库查询数据后存放在list return回页面,页面接收后是空白的·
先上错误图
能显示当前页数,但是查询出来的数据却不显示 只有三行空白。 求指教下
代码:
action:

package com.wh.actions;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import com.wh.beans.Productlist;
import com.wh.service.ProductService;
import com.wh.util.Pager;
@SuppressWarnings("serial")
public class Product_listAction extends ActionSupport {
	private String Msg;
	private List resultList=new ArrayList();//返回结果集  
	public List getResultList() {
		return resultList;
	}

	public void setResultList(List resultList) {
		this.resultList = resultList;
	}

	public String getMsg() {
		return Msg;
	}

	public void setMsg(String msg) {
		Msg = msg;
	}
	private String product_id;
	private String product_name;
	private String product_type;
	private String Suppliername;

	private Integer currentPage=1;

	public Integer getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(Integer currentPage) {
		this.currentPage = currentPage;
	}
	List<Productlist> prolist = new ArrayList(); ;
	private ProductService proService;
	private Productlist pro;

	public String getProduct_id() {
		return product_id;
	}

	public void setProduct_id(String product_id) {
		this.product_id = product_id;
	}

	public String getProduct_name() {
		return product_name;
	}

	public void setProduct_name(String product_name) {
		this.product_name = product_name;
	}

	public String getProduct_type() {
		return product_type;
	}

	public void setProduct_type(String product_type) {
		this.product_type = product_type;
	}

	public String getSuppliername() {
		return Suppliername;
	}

	public void setSuppliername(String suppliername) {
		Suppliername = suppliername;
	}

	public List<Productlist> getProlist() {
		return prolist;
	}

	public void setProlist(List<Productlist> prolist) {
		this.prolist = prolist;
	}

	public ProductService getProService() {
		return proService;
	}

	public void setProService(ProductService proService) {
		this.proService = proService;
	}

	public Productlist getPro() {
		return pro;
	}

	public void setPro(Productlist pro) {
		this.pro = pro;
	}


   
    /**
           分页
     */
 
   
	@SuppressWarnings("unchecked")
	public String PageList() throws Exception{
    
    	int totalSize = proService.GettotalSize(product_id, product_name, product_type, Suppliername); 
    	Pager pager = new Pager(currentPage,totalSize);
    	prolist =proService.GetProduct_list2(product_id, product_name, product_type, Suppliername,currentPage, pager.getPageSize());
    	Map request = (Map)ActionContext.getContext().get("request");
    	//Map session = ActionContext.getContext().getSession();
    	request.put("pager",pager);
    	return SUCCESS;
    }

}

dao:

@SuppressWarnings("unchecked")
	public List<Productlist> GetProduct_list2(String product_id,String product_name,String product_type,String supplier,int currentPage,int pageSize){

		 
		String sql ="select ProductID as Product_id ,ProductName as Product_name,SupplierID as Suppliername, ";
		sql+="        SmallClass as Product_type,price as Product_pice,LargeClass as Reamk";
		sql+="        from productmaster";
		sql+="        where 1=1";
		if(!(isInvalid(product_id)))
		{
			sql+=" and ProductID="""+product_id+"""";
		}
		if(!(isInvalid(product_name)))
		{
			sql+=" and ProductName="""+product_name+"""";
		}
		if(!(isInvalid(product_type)))
		{
			sql+=" and SmallClass="""+product_type+"""";
		}
		if(!(isInvalid(supplier)))
		{
			sql+=" and SupplierID="""+supplier+"""";
		}
		sql+=" order by ProductID";
		Session session = getsession();
		Query query=session.createSQLQuery(sql);
		int startRow = (currentPage - 1) * pageSize;
		query.setFirstResult(startRow);
		query.setMaxResults(pageSize);
		List<Productlist> list = query.list();
		session.close();
		return list;
	}

bean:

package com.wh.beans;
/**
 * Book generated by MyEclipse - Hibernate Tools
 */

public class Productlist {

  private String Product_id;
  private String Product_name;
  private String Product_type;
  private String Suppliername;
  private double Product_pice;
  private String Reamk;
public String getProduct_id() {
	return Product_id;
}
public void setProduct_id(String product_id) {
	Product_id = product_id;
}
public String getProduct_name() {
	return Product_name;
}
public void setProduct_name(String product_name) {
	Product_name = product_name;
}
public String getProduct_type() {
	return Product_type;
}
public void setProduct_type(String product_type) {
	Product_type = product_type;
}
public String getSuppliername() {
	return Suppliername;
}
public void setSuppliername(String suppliername) {
	Suppliername = suppliername;
}

public double getProduct_pice() {
	return Product_pice;
}
public void setProduct_pice(double product_pice) {
	Product_pice = product_pice;
}
public String getReamk() {
	return Reamk;
}
public void setReamk(String reamk) {
	Reamk = reamk;
}

}

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page import="com.wh.beans.Productlist" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
    
    <title>商品查询</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link href="Style/Style.css" rel="stylesheet" type="text/css" />
  <script type="text/javascript">
  
  		function btn_Submit(){
  			var myform = document.forms["form_pro"];
  			myform.action="roduct_List.action";
  			myform.method="post";
  			myform.submit();
  		}
  </script>
  </head>
  
  <body>
    <center>
 
  <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td>
     <%@ include file="Top.jsp"%>
    </td>
    </tr>
    <tr>
      <td height="500" align="center" valign="top">
      <table width="900" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="191" height="500" align="center" valign="top" background="Images/leftbg.jpg">
          <%@ include file="Left.jsp"%>
          </td>
          <td width="709" align="center" valign="top" bgcolor="#F6F9FE">
         <form name="form_pro">
          <table width="709"  border="1" cellspacing="0" cellpadding="0">
           <tr>
              <td colspan="6" height="30" width="100%" background="Images/mainMenuBg.jpg" style="padding-left:25px;">商品查询</td>
            </tr>
             <tr>
              <td class="leftsize">
                                                     商品编码:
              </td>
              <td class="rightsize" >
              <input type="text" name="product_id" value="${product_id}" />
              </td>
              <td class="leftsize">
                                                    商品名称:
              </td>
              <td class="rightsize">
              <input type="text" name="product_name" value="${product_name}" />
              </td>
              <td class="leftsize">
              	 商品分类:
              </td>
              <td class="rightsize">
              	<input type="text" name="product_type" value="${product_type}"/>
              </td>
             </tr>
             <tr>
             <td class="leftsize">
                                                供应商:
             </td>
             <td class="rightsize">
             <input type="text" name="Suppliername" value="${Suppliername}"/>
             </td>
             <td colspan="4" align="right">
             <input type="button" name="btn_Submint" value="查询" OnClick="btn_Submit()">
             </td>
             </tr>
          </table>
         </form>
       <s:set name="pager" value="#request.pager"/>
          <table width="100%" border="0" cellspacing="0" cellpadding="0">
          	<tr align="center"  class="t1">
          	<td height="25" bgcolor="#D5E4F4"><strong>商品编号</strong></td>
          	<td bgcolor="#D5E4F4"><strong>商品名称</strong></td>
          	<td bgcolor="#D5E4F4"><strong>商品分类</strong></td>
          	<td bgcolor="#D5E4F4"><strong>供应商名称</strong></td>
          	<td bgcolor="#D5E4F4"><strong>商品价格</strong></td>
          	<td bgcolor="#D5E4F4"><strong>备注</strong></td>
          	</tr>
          
          	<s:iterator  value="prolist">
  
          	<tr>
          	 <td height="25" align="center"><s:property value="Product_id"/></td>
          	<td><s:property value="Product_name"/></td>
          	<td><s:property value="Product_type"/></td>
          	<td><s:property value="Suppliername"/></td>
          	<td><s:property value="Product_pice"/></td>
          	<td><s:property value="Reamk"/></td>
          	</tr>
      
          	</s:iterator>
          </table>
         <table>
          
          	<s:if test="#pager.hasFirst">
          		<a href="page_product.action?currentPage=1">首页</a>
          	</s:if>
          	<s:if test="#pager.hasPrevious">
          	<a href="page_product.action?currentPage=<s:property value="#pager.currentPage-1"/>">上一页</a>
          	</s:if>
          	<s:if test="#pager.hasNext">
			<a href="page_product.action?currentPage=<s:property value="#pager.currentPage+1"/>">下一页</a>
			</s:if>
		   <s:if test="#pager.hasLast">
			<a href="page_product.action?currentPage=<s:property value="#pager.totalPage"/>">尾页</a>
		   </s:if>
		   <br>
			当前第<s:property value="#pager.currentPage"/>页,总共<s:property value="#pager.totalPage"/>页
          </table>
         
          </td>
          </tr>
          </table>
          </td>
          </tr>
          <tr>
      <td height="35" background="Images/bootBg.jpg">&nbsp;</td>
    </tr>
    </table>

   </center> 
   
  </body>
</html>

25分
你现在Action遍历打印一下prolist,看看你数据都拿到了没~~
还有把prolist定义成public的
感觉你封装的不太对,分页数据的List没有封装到Pager对象中去吗?
楼上正解!
引用 1 楼 wlwlwlwl015 的回复:

你现在Action遍历打印一下prolist,看看你数据都拿到了没~~
还有把prolist定义成public的
感觉你封装的不太对,分页数据的List没有封装到Pager对象中去吗?

我试着遍历了下 出了个问题

	for(int i = 0;i<prolist.size();i++){
    
    		System.out.print(prolist.get(i).getProduct_id()+",");
    		System.out.print(prolist.get(i).getProduct_name()+",");
    		System.out.print(prolist.get(i).getProduct_pice()+",");
    		System.out.print(prolist.get(i).getProduct_type()+",");
    		System.out.print(prolist.get(i).getSuppliername()+",");
    		System.out.print(prolist.get(i).getReamk()+",");
    		System.out.println("--------------------------------");
    	}

[Ljava.lang.Object; cannot be cast to com.wh.beans.Productlist

pager里面封装的是 当前页数,总页数,合上一页下一页这些信息


25分
引用 3 楼 java_NewWorld 的回复:
Quote: 引用 1 楼 wlwlwlwl015 的回复:

你现在Action遍历打印一下prolist,看看你数据都拿到了没~~
还有把prolist定义成public的
感觉你封装的不太对,分页数据的List没有封装到Pager对象中去吗?

我试着遍历了下 出了个问题

	for(int i = 0;i<prolist.size();i++){
    
    		System.out.print(prolist.get(i).getProduct_id()+",");
    		System.out.print(prolist.get(i).getProduct_name()+",");
    		System.out.print(prolist.get(i).getProduct_pice()+",");
    		System.out.print(prolist.get(i).getProduct_type()+",");
    		System.out.print(prolist.get(i).getSuppliername()+",");
    		System.out.print(prolist.get(i).getReamk()+",");
    		System.out.println("--------------------------------");
    	}

[Ljava.lang.Object; cannot be cast to com.wh.beans.Productlist

pager里面封装的是 当前页数,总页数,合上一页下一页这些信息

prolist里面不是放的ProductList对象实例吗?
for(int i = 0;i<prolist.size();i++){ 
   Productlist  prod= (Productlist)prolist.get(i); 先显式转换一下看看,或者prolist.get(i).getClass看看到底放的什么对象

如果对象数组里面东西没问题,页面用
<%
 List<Productlist> list = request.getAttribute(“pager”);
%>获取到你后台set进来的分页对象,标签库找的也就是request里面的Object,再逐步检查pager里面的list对象是否正确

引用 1 楼 wlwlwlwl015 的回复:

你现在Action遍历打印一下prolist,看看你数据都拿到了没~~
还有把prolist定义成public的
感觉你封装的不太对,分页数据的List没有封装到Pager对象中去吗?

我研究出来了,谢谢你 对于我一个半道进java的帮助!
hibernate 查询出来是object类,我在dao里面加了这段转换,然后return会jsp页面后就能正常显示了

		List<Object[]> list = query.list();
		session.close();
		List<Productlist> prolist = new ArrayList<Productlist>(); 
		for(int i =0;i<list.size();i++){

			Object[] obs=list.get(i);
			Productlist po = new Productlist();
			po.setProduct_id((String)obs[0]);
			po.setProduct_name((String)obs[1]);
			po.setSuppliername((String)obs[2]);
			po.setProduct_type((String)obs[3]);
			po.setProduct_pice(Double.parseDouble(obs[4].toString()));
			po.setReamk((String)obs[5]);
			prolist.add(po);
		}


		return prolist;
引用 4 楼 qingyuan18 的回复:
Quote: 引用 3 楼 java_NewWorld 的回复:
Quote: 引用 1 楼 wlwlwlwl015 的回复:

你现在Action遍历打印一下prolist,看看你数据都拿到了没~~
还有把prolist定义成public的
感觉你封装的不太对,分页数据的List没有封装到Pager对象中去吗?

我试着遍历了下 出了个问题

	for(int i = 0;i<prolist.size();i++){
    
    		System.out.print(prolist.get(i).getProduct_id()+",");
    		System.out.print(prolist.get(i).getProduct_name()+",");
    		System.out.print(prolist.get(i).getProduct_pice()+",");
    		System.out.print(prolist.get(i).getProduct_type()+",");
    		System.out.print(prolist.get(i).getSuppliername()+",");
    		System.out.print(prolist.get(i).getReamk()+",");
    		System.out.println("--------------------------------");
    	}

[Ljava.lang.Object; cannot be cast to com.wh.beans.Productlist

pager里面封装的是 当前页数,总页数,合上一页下一页这些信息

prolist里面不是放的ProductList对象实例吗?
for(int i = 0;i<prolist.size();i++){ 
   Productlist  prod= (Productlist)prolist.get(i); 先显式转换一下看看,或者prolist.get(i).getClass看看到底放的什么对象

如果对象数组里面东西没问题,页面用
<%
 List<Productlist> list = request.getAttribute(“pager”);
%>获取到你后台set进来的分页对象,标签库找的也就是request里面的Object,再逐步检查pager里面的list对象是否正确

我研究出来了,谢谢你 对于我一个半道进java的帮助!
hibernate 查询出来是object类,我在dao里面加了这段转换,然后return会jsp页面后就能正常显示了

		List<Object[]> list = query.list();
		session.close();
		List<Productlist> prolist = new ArrayList<Productlist>(); 
		for(int i =0;i<list.size();i++){

			Object[] obs=list.get(i);
			Productlist po = new Productlist();
			po.setProduct_id((String)obs[0]);
			po.setProduct_name((String)obs[1]);
			po.setSuppliername((String)obs[2]);
			po.setProduct_type((String)obs[3]);
			po.setProduct_pice(Double.parseDouble(obs[4].toString()));
			po.setReamk((String)obs[5]);
			prolist.add(po);
		}


		return prolist;

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明SSH分页查询问题