10、新增商品——商品類目選擇
阿新 • • 發佈:2018-12-14
新增商品——商品類目選擇
使用的是 EasyUI 的 tree 控制元件
原型
點選新增商品。最終目標如下:
點擊發送的請求為:
POST http://localhost:8081/item/cat/list 404 (Not Found)
功能分析
點選,觸發一個事件
搜尋一下selectItemCat
,該jsp
檔案沒有,那就是一個外部的 js
展示商品分類列表,使用EasyUI
的tree控制元件
展示。
初始化tree
請求的url
:/item/cat/list
引數:
初始化tree
時只需要把第一級節點展示,子節點非同步載入。
long id(父節點id)
返回值:json
[{
"id": 1,
"text": "Node 1",
"state": "closed"
},{
"id": 2,
"text": "Node 2",
"state": "closed"
}]
state
:如果節點下有子節點closed
,如果沒有子節點open
。
步驟
建立EasyUITreeNode
建立一個pojo
來描述tree
的節點資訊,包含三個屬性id
、text
、state
。放到e3-common
工程中。
package cn.ynx.e3mall. common.pojo;
import java.io.Serializable;
public class EasyUITreeNode implements Serializable {
private long id;
private String text;
private String state;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getText () {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
查詢的表:
tb_item_cat
查詢列:
Id
、name
、isparent
查詢條件parentId
Dao
層
tb_item_cat
可以使用逆向工程生成的程式碼
Service
層
引數:long parentId
業務邏輯:
1、根據parentId
查詢節點列表
2、轉換成EasyUITreeNode
列表。
3、返回。
返回值:List<EasyUITreeNode>
package cn.ynx.e3mall.service;
import cn.ynx.e3mall.common.pojo.EasyUITreeNode;
import java.util.List;
public interface ItemCatService {
List<EasyUITreeNode> getCatList(long parentId);
}
package cn.ynx.e3mall.service.impl;
import cn.ynx.e3mall.common.pojo.EasyUITreeNode;
import cn.ynx.e3mall.mapper.TbItemCatMapper;
import cn.ynx.e3mall.pojo.TbItemCat;
import cn.ynx.e3mall.pojo.TbItemCatExample;
import cn.ynx.e3mall.service.ItemCatService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
public class ItemCatServiceImpl implements ItemCatService {
@Resource
private TbItemCatMapper tbItemCatMapper;
@Override
public List<EasyUITreeNode> getCatList(long parentId) {
//根據parentId查詢子節點列表
TbItemCatExample example = new TbItemCatExample();
TbItemCatExample.Criteria criteria = example.createCriteria();
criteria.andParentIdEqualTo(parentId);
List<TbItemCat> list = tbItemCatMapper.selectByExample(example);
//建立返回結果List
List<EasyUITreeNode> resultList = new ArrayList<>();
//把列表轉換成EasyUITreeNode列表
for (TbItemCat tbItemCat : list) {
EasyUITreeNode node = new EasyUITreeNode();
//設定屬性
node.setId(tbItemCat.getId());
node.setText(tbItemCat.getName());
node.setState(tbItemCat.getIsParent()?"closed":"open");
//新增到結果列表
resultList.add(node);
}
//返回結果
return resultList;
}
}
釋出服務:
<dubbo:service interface="cn.ynx.e3mall.service.ItemCatService" ref="itemCatServiceImpl" timeout="300000" />
Controller
層
引用服務:
<dubbo:reference interface="cn.ynx.e3mall.service.ItemCatService" id="itemCatService" />
初始化tree
請求的url
:/item/cat/list
引數:
long id(父節點id)
返回值:json
。資料格式
List<EasyUITreeNode>
package cn.ynx.e3mall.controller;
import cn.ynx.e3mall.common.pojo.EasyUITreeNode;
import cn.ynx.e3mall.service.ItemCatService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;
@Controller
public class ItemCatController {
@Resource
private ItemCatService itemCatService;
@RequestMapping("/item/cat/list")
@ResponseBody
public List<EasyUITreeNode> getItemCatList(
@RequestParam(name = "id" ,defaultValue = "0")Long parentId){
//呼叫服務查詢節點列表
List<EasyUITreeNode> list = itemCatService.getCatList(parentId);
return list;
}
}
@RequestParam(value="id", defaultValue="0")Long parented
給id
一個預設值0