標籤:列表 field 解析 format ltm 資訊 任務 put 下載失敗
需求: 系統前端jsp使用的是easyUi的datagrid展示了一些任務資訊,任務資訊中有個狀態資訊顯示的值是數字,
需要根據後台儲存的映射關係,將狀態顯示為描述資訊。
原來的jsp最上層顯示:
解決方案,在後台使用建立json資料,然後傳遞到前台jsp頁面中,並使用eval解析後擷取值對應的描述,操作如下:
1. 建立json資料(java)
//工作清單 public static final String TASK_PENDING = "0"; //命令處理成功 public static final String TASK_COMMAND_SUCCESS = "1"; //命令處理失敗 public static final String TASK_COMMAND_FAILED = "2"; //下載處理成功 public static final String TASK_DOWN_SUCCESS = "3"; //下載處理失敗 public static final String TASK_DOWN_FAILED = "4"; //郵件發送成功 public static final String TASK_MAIL_SUCCESS = "5"; //郵件發送失敗 public static final String TASK_MAIL_FAILED = "6"; //處理成功 public static final String TASK_COMPLETE = "99"; public static String getStatusJson(){ JSONObject statusJson = new JSONObject(); statusJson.put(TASK_PENDING, "待處理"); statusJson.put(TASK_COMMAND_SUCCESS, "指令碼執行成功"); statusJson.put(TASK_COMMAND_FAILED, "指令碼執行失敗"); statusJson.put(TASK_DOWN_SUCCESS, "檔案下載成功"); statusJson.put(TASK_DOWN_FAILED, "檔案下載失敗"); statusJson.put(TASK_MAIL_SUCCESS, "郵件發送成功"); statusJson.put(TASK_MAIL_FAILED, "郵件發送失敗"); statusJson.put(TASK_COMPLETE, "完成"); return statusJson.toString(); }
2. 傳值(java)
String statusJson = Constants.getStatusJson();resultMap.put("statusJson",statusJson);
3. 前端jsp中使用js擷取值(js)
//根據傳入的狀態碼擷取狀態原因function getStatusDesc(key){ var obj = eval("(" + ‘${statusJson}‘ + ")"); return obj[key];}
4. 使用datagrid的formatter調用function
1 { 2 field: ‘status‘, 3 title: ‘狀態‘, 4 halign: ‘left‘, 5 align : ‘left‘, 6 width : ‘100‘, 7 formatter:function(value,row,index){ 8 var desc = getStatusDesc(value); 9 return desc;10 }11 },
view code
最終顯示結果如下:
後話: 剛開始是在後台使用map作為傳值,js中解析map比較複雜,後來改用json後方便多了。
java後台配置資訊如何傳遞到前端jsp頁面