Migo商城2.0 新增商品添加规格参数的实现 十二
页面展示规格参数模板
在商品添加或者商品修改时,根据商品的分类id查询此商品分类对应的规格参数模板。根据规格参数模板,生成一个表单供用户使用
迭代相应js代码
为实现restful风格 修改为ajax格式的,同时和其他功能公用同一个方法,改造访问URL
url: "/rest/item/param/" + node.id
:
和上面对比应该发现,restful风格代码更加直观,逻辑处理更加清晰可见!
1 | changeItemParam : function(node,formId){ |
展示效果
通过js代码把用户提交的数据生成json数据格式
上章有讲,可以对比下
1 | //输入的规格参数数据保存为json |
后台实现
只需要在Controller中添加一个参数,接收商品的规格参数即可。
Service中也需要添加一个参数,增加插入规格参数表的处理。
改造ItemService
saveItem
中 方法 如下:
1 | //desc参考前端页面传过来的数据是序列化成字符串的 |
改造controller
1 | /** |
运行项目,添加商品
数据库存储数据格式:
1 | [ |
编辑商品
规格参数的回显
编辑商品时通过商品id查询规格参数数据
前台js代码(item-list.jsp
)
1 | //加载商品规格 |
后台实现:
访问URL
: /rest/item/param/item/{itemId}
controller
1 | package com.migo.controller; |
运行项目:发现无法回显商品描述,还有商品参数回显404 后台日志信息:
1 | 2016-11-15 21:55:59,022 [http-bio-8080-exec-10] [com.migo.controller.ItemParamItemController]-[INFO] 根据商品Id查询商品规格参数数据 itemId = 147921564322726 //开始!!!!!!!!!!! |
查后台数据库,发现新增加商品id正常,但是desc 和商品规格参数所对应的商品id为0,遂修改新增商品service代码如下:
1 | //desc参考前端页面传过来的数据是序列化成字符串的 |
接着查询,返回数据显示正常,但是页面显示不正确:
查看前端js代码发现,为迭代完全,真坑,遂修改:
因为restful风格之后,完全可以直接拿到参数了,无须中间多那一层,以前是做了一层封装,请参考 migo商城第一版
源码
1 | //加载商品规格 |
最终结果展示:
最后,更新规格参数数据
后台实现:
ItemParamItemService
1 | package com.migo.service; |
ItemService
1 | /** |
ItemController
修改实现
1 | /** |
启动项目测试,后台日志分析:
通过日志,能看到很多东西,可见添加日志代码的重要性和查看日志的重要性,很多bug都是通过日志发现解决的