从POJO向JSP发送数据数组

时间:2015-11-17 03:30:15

标签: arrays jsp pojo

我在JSP中打印数据数组时遇到了问题,接下来发生了什么。 我创建了一个名为:popArayCustOrd

的POJO
   public class popAryCustOrd {
          public String prodkey,descrp,strgth,stkunt;
          double rprice;
          int quantity;

    popAryCustOrd(String prodkey,String descrp,int quantity,Double rprice,String stkunt,String strgth){
    this.prodkey = prodkey;
    this.descrp = descrp;
    this.quantity = quantity;
    this.rprice = rprice;
    this.stkunt = stkunt;
    this.strgth = strgth;

}
public void setProdkey(String prodkey){
    this.prodkey = prodkey;
}
public String  getProdkey(){
    return(this.prodkey);
}
public void setDescrp(String descrp){
    this.descrp = descrp;
}
public String getDescrp(){
    return(this.descrp);
}
public void setQuantity(int quantity){
    this.quantity = quantity;
}
public int getQuantity(){
    return(this.quantity);
}
public void setRprice(double rprice){
    this.rprice = rprice;
}
public double getRprice(){
    return(this.rprice);
}
public void setStkunt(String stkunt){
    this.stkunt = stkunt;
}
public String getStkunt(){
    return(this.stkunt);
}
public void setStrgth(String strgth){
    this.strgth = strgth;
}
public String getStrgth(){
    return(this.strgth);
}

}

在我的名为seekprod.java的servlet文件中,我在方法中分配了来自数据库的数据....

      connx.rs.beforeFirst();
           while(connx.rs.next()){
              popAryCustOrd[] prodList = new popAryCustOrd[]{new                                 popAryCustOrd(connx.rs.getString("prodkey"),connx.rs.getString("descrp"),connx.rs.getInt("quantity"),connx.rs.getDouble("retailp"),connx.rs.getString("stkunit"),connx.rs.getString("strength"))};
                        request.setAttribute("prodList", prodList);

                    }

                     RequestDispatcher dispatcher =        request.getRequestDispatcher("preOrdFrm.jsp? inKey="+this.inKey+"&transkey=drugs");
                     dispatcher.forward(request, response);

.......

我的JSP访问数据是.....

    <c:forEach items="${prodList}" var="paramx" >
       <tr>
         <td>${paramx.prodkey}</td>
         <td style="text-align: center; word-wrap: break-word; word-break:break-all; text-overflow: ellipsis;overflow:hidden;white-space: normal; white-space: -webkit-pre-wrap;">${paramx.descrp}</td>
     <td>${paramx.stkunt}</td>
     <td>${paramx.strgth}</td>
     <td>${paramx.rprice}</td>
     <td>${paramx.quantity}</td>
     <td><input type="hidden" name="agentId" value="<%=uID %>">
     <input type="hidden" name="pcode" value=${paramx.prodkey}>
     <input type="hidden" name="inKey" value=${param.inKey}>
     <input type="hidden" name="transKey" value="sveOrd">
     <input style="font-size:50px; height:55px; width:100px" type="number" name="desqty" min="1" required="" value="1"/></td>
     <td><input style="font-size:20px; height:55px; width:100px" type="submit" name="transact" value="Save"/></td>
                                         </tr>
                                         </c:forEach>

最终它有效,但我只得到一个结果,而不是数据库表中的三个记录,我在sql中的语法是正确的,我检查了很多次,并与结果进行了比较。我不知道我的代码部分要修复。如果你能帮助我,我很高兴。?

1 个答案:

答案 0 :(得分:0)

while(connx.rs.next()){
            popAryCustOrd[] prodList = new popAryCustOrd[]{new
    popAryCustOrd(connx.rs.getString("prodkey"),connx.rs.getString("descrp"),connx.rs.getInt("quantity"),connx.rs.getDouble("retailp"),connx.rs.getString("stkunit"),connx.rs.getString("strength"))};

        request.setAttribute("prodList", prodList);
 }

考虑它设置的代码,然后在每个循环执行时重置prodList对象中的request属性,这样你的jsp将只接收设置为prodList的最后一个值。

最好在循环外部初始化ArrayList并向其添加值,然后在循环之后使用该列表在prodList对象中设置属性request