form表单提交的List在action中得不到值

sunbingqiang 2012-08-23 08:34:12
初期化的时候,action同过Dao从数据库得到多条数据,在页面显示。
编辑后,提交表单,action中得到的list为空
其它的字段都没有问题,只有list为空。
不知道为什么?请各位大虾指点一二

action代码:
public ActionForward OrderInit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
OrderForm orderForm = (OrderForm) form;
ProductDao productDao = new ProductDao();
ArrayList<ProductDto> list = productDao.searchProduct();
orderForm.setProductList(list);
return mapping.findForward("order");
}

form代码:
public class OrderForm extends BaseForm {
...
private String priceBlack;
private String totalPrice;
private ArrayList<ProductDto> productList = new ArrayList<ProductDto>();

/**
* @return the productList
*/
public ArrayList<ProductDto> getProductList() {
return productList;
}

/**
* @param productList the productList to set
*/
public void setProductList(ArrayList<ProductDto> productList) {
this.productList = productList;
}

...
}

Dto代码:
public class ProductDto extends BaseDto {
private String productID;
。。。
private String countS;
private String countP;
private String priceTotal;

/**
* @return the productID
*/
public String getProductID() {
return productID;
}

/**
* @param productID the productID to set
*/
public void setProductID(String productID) {
this.productID = productID;
}
。。。
}

JSP代码:
<html:form action="/order.do?method=orderLogin">

<table border="1" cellspacing="0">
<logic:notEmpty name="orderForm" property="productList" >
<logic:iterate id="product" name="orderForm" property="productList">
<tr>
<td><html:text name="product" property="productID" size="5" indexed="true"/></td>
<td><html:text name="product" property="name" size="5" indexed="true"/></td>
<td><html:text name="product" property="price" size="5" indexed="true"/></td>
<td><html:text name="product" property="description" size="5" indexed="true"/></td>
</tr>  
</logic:iterate>
</logic:notEmpty >
</table>

.....
<html:submit/>
</html:form>

初期化时,页面显示后台得到的数据库List信息
但编辑提交后,得不到List信息。
请高手指点一下。
...全文
380 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunbingqiang 2012-08-28
  • 打赏
  • 举报
回复
那位高人给指点一二,楼主在这里拜谢啦!
dw_java08 2012-08-27
  • 打赏
  • 举报
回复
action代码:
public ActionForward OrderInit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
OrderForm orderForm = (OrderForm) form; 实际上数据已经传入到form里面了,只是你取得方法不对,
ArrayList<ProductDto> list = form.getProductList();
if(list.size() >0 ){
System.out.println("list not null");
}
ProductDao productDao = new ProductDao();
ArrayList<ProductDto> list = productDao.searchProduct();
orderForm.setProductList(list);
return mapping.findForward("order");
}

楼主试试!
sunbingqiang 2012-08-27
  • 打赏
  • 举报
回复
order.jsp中list对应代码如下:
<table border="1" cellspacing="0">
<logic:notEmpty name="orderForm" property="productList" >
<logic:iterate id="product" name="orderForm" property="productList" type="com.YOUST.dto.ProductDto">
<tr>
<td><html:text name="product" property="productID" size="5" indexed="true"/></td>
<td><html:text name="product" property="name" size="5" indexed="true"/></td>
<td><html:text name="product" property="price" size="5" indexed="true"/></td>
<td><html:text name="product" property="description" size="5" indexed="true"/></td>
</tr>  
</logic:iterate>
</logic:notEmpty >
</table>

OrderForm.java中list对应代码如下:
private ArrayList<ProductDto> productList = new ArrayList<ProductDto>();

/**
* @return the productList
*/
public ArrayList<ProductDto> getProductList() {
return productList;
}

/**
* @param productList the productList to set
*/
public void setProductList(ArrayList<ProductDto> productList) {
this.productList = productList;
}

二者应该没什么问题吧!?
sunbingqiang 2012-08-27
  • 打赏
  • 举报
回复
实际上OrderInit action是初期化方法,从数据库取数据,多条数据,已经显示在画面上啦!
public ActionForward OrderInit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
OrderForm orderForm = (OrderForm) form;
ProductDao productDao = new ProductDao();
ArrayList<ProductDto> list = productDao.searchProduct();
orderForm.setProductList(list);
return mapping.findForward("order");
}

页面编辑后提交orderLogin action方法接收
public ActionForward orderLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
OrderForm orderForm = (OrderForm) form;
ArrayList<ProductDto> list = orderForm.getProductList();
......
}
list为空[],size=0
sunbingqiang 2012-08-26
  • 打赏
  • 举报
回复
试了一楼的方法,得到的list还是空size=0

刚开始form中list变量如下
private ArrayList<ProductDto> productList;
而不是
private ArrayList<ProductDto> productList = new ArrayList<ProductDto>();
结果actin中得到的list值为null
改过后一直都是空,size=0;

不知道为什么???
scbb 2012-08-23
  • 打赏
  • 举报
回复
取数据的form你得需要这样的方法。

private String[] productID;

/**
* @return the productID
*/
public String[] getProductID() {
return productID;
}

/**
* @param productID the productID to set
*/
public void setProductID(String[] productID) {
this.productID = productID;
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧