1.有關項目中KindEditor富文本編輯器的使用。
我們是在商品描述的時候用的富文本編輯器,需要添加<textarea>組件來初始化我們的編輯器頁面,可以看到它是個隱藏域,它的作用有兩個,第一個是當在富文本編輯器編輯完內容后,將內容賦值給這個textarea,然后就可以隨着表單提交給數據庫處理了。第二個作用是當修改編輯內容的時候,需要先加載以前的內容,kindeditor便可以從這個隱藏域中獲取到原來的數據並展示出來。
2.商品添加功能的實現
ps:需要注意的是,在添加的時候其實是想數據保存到兩張表中取,一張是商品表tb_item,一張是商品描述表tb_item_desc
由於每個操作都需要有狀態碼來表示操作成功與否以及相關信息,因此我們定義一個JingxiResult來專門處理,該類定義三個屬性,分別是狀態、消息及數據。由於這個類會被多個工程所使用,因此放到jingxi-common的pojo目錄下
package com.jingxi.common.pojo; import java.util.List; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JingXiResult { // 定義jackson對象 private static final ObjectMapper MAPPER= new ObjectMapper(); // 響應業務狀態 private Integer status; // 響應消息 private String msg; // 響應中的數據 private Object data; public static JingXiResult build(Integer status, String msg, Object data) { return new JingXiResult(status, msg, data); } public static JingXiResult ok(Object data) { return new JingXiResult(data); } public static JingXiResult ok() { return new JingXiResult(null); } public JingXiResult() { } public static JingXiResult build(Integer status, String msg) { return new JingXiResult(status, msg, null); } public JingXiResult(Integer status, String msg, Object data) { this.status= status; this.msg= msg; this.data= data; } public JingXiResult(Object data) { this.status= 200; this.msg= "OK"; this.data= data; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } /*** 將json結果集轉化為JingXiResult對象 * * @paramjsonData json數據 * * @paramclazz JingXiResult中的object類型 * * @return * */ public static JingXiResult formatToPojo(String jsonData, Class<?> clazz) { try{ if(clazz== null) { return MAPPER.readValue(jsonData, JingXiResult.class); } JsonNode jsonNode= MAPPER.readTree(jsonData); JsonNode data= jsonNode.get("data"); Object obj= null; if(clazz!= null) { if(data.isObject()) { obj= MAPPER.readValue(data.traverse(), clazz); } else if(data.isTextual()) { obj= MAPPER.readValue(data.asText(), clazz); } }return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj); } catch(Exception e) { return null; } } /*** 沒有object對象的轉化 * * * @paramjson* * @return*/ public static JingXiResult format(String json) { try{ return MAPPER.readValue(json, JingXiResult.class); } catch(Exception e) { e.printStackTrace(); } return null; } /*** Object是集合轉化* * * @paramjsonData json數據 * * @paramclazz 集合中的類型 * * @return*/ public static JingXiResult formatToList(String jsonData, Class<?> clazz) { try{ JsonNode jsonNode= MAPPER.readTree(jsonData); JsonNode data= jsonNode.get("data"); Object obj= null; if(data.isArray() && data.size() > 0) { obj= MAPPER.readValue(data.traverse(),MAPPER.getTypeFactory() .constructCollectionType(List.class, clazz)); }return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj); } catch(Exception e) { return null; } } }
ii. DAO 層
我們使用反向代理生成的代碼即可,不需要編寫任何代碼。
iii. Service 層
方法入參:接收商品 pojo
方法返回:JingXiResult
邏輯:把商品的 pojo 內容補全,然后插入到數據表中。
@Override public JingXiResult createItem(TbItem item,String desc,String params) { JingXiResult result = new JingXiResult(); result.setStatus(500); Date date=new Date(); //獲得商品id long id=IDUtil.genItemId(); //添加商品信息 item.setId(id); //商品狀態,1-正常,2-下架,3-刪除 item.setStatus((byte) 1); item.setCreated(date); item.setUpdated(date); int i=itemMapper.insert(item); itemParamServcie.createParamItem(id, params); if(i==1 && createTbItemDesc(id,desc)){ result.setStatus(200); return result; } return result; } @Override public boolean createTbItemDesc(long itemId,String desc) { System.out.println(itemId+","+desc); TbItemDesc tbitemdesc =new TbItemDesc(); tbitemdesc.setItemId(itemId); tbitemdesc.setItemDesc(desc); tbitemdesc.setCreated(new Date()); tbitemdesc.setUpdated(new Date()); if(tbitemdescmapper.insert(tbitemdesc) == 1) return true; return false; }
iv. Controller 層
方法入參:接收頁面傳過來的表單內容
方法返回:JingXiResult 對象(json)
至此,kindeditor編輯器的使用以及商品的添加功能 結束~