JFinal处理复杂request参数

龙影 发布于 2014/09/24 16:04
阅读 1K+
收藏 1

前端使用MVVM框架,利用jquery的ajax POST 向服务器提交JSON:

{a:"",productList:[{id:"1",amount:1,price:10},{id:"2",amount:1,price:20}]}

那么使用request如何更方便的从request取出,转换成Map 或List对象?

前端浏览器提交数据为:

Form data:

a:""

productList[0][id]:1


productList[0][amount]:1


productList[0][price]:10


productList[0][id]:2

productList[0][amount]:1

productList[0][price]:20



 

@JFinal

加载中
1
JFinal
JFinal

     在你的 controller 中写个 getModels 就可以打完收工了,大致代码如下:

List<Product> products = new ArrayList<Product>();
for (int i=0; i<x; i++) {
 Product p = getModel(Product.class, "productList[" + i + "]");
 products.add(p);
}



   参考 jfinal 的 getModel 方法必须可以打完收工

JFinal
JFinal
回复 @龙影 : 你这貌似是二维数组,可以改改页面表单为一维数组,要不就改改后端的 for 循环,参考 getModel 方法
龙影
龙影
嗯 好的,我咋没想到呢?
0
龙影
龙影

回复 @JFinal : 是我为了前端方便,而处理的。因为前端采用list包装json对象。用来构成自动增加删除产品列表。我给上图给你看看。


提交的是这个产品列表。

0
龙影
龙影

回复 @JFinal : 还是有问题啊,我上图:

不是类似与productList[0].zkl这块的。所以getModel的方法还是不适合。

看来也只能是通过这样的方式了:

attr.put("product_id",this.getAttr(pname+"["+i+"][product_id]"));
attr.put("quoted_price",this.getAttr(pname+"["+i+"][quoted_price]"));
attr.put("sale_price",this.getAttr(pname+"["+i+"][sale_price]"));
attr.put("amount",this.getAttr(pname+"["+i+"][amount]"));
attr.put("description",this.getAttr(pname+"["+i+"][description]"));

JFinal
JFinal
不要用 getModel 用个两层嵌套的 for 循环配合 getPara 系列方法即可打完收工
返回顶部
顶部