1.jsp文件的方法
$("#assignPermissionBtn").click(function(){
var jsonData = new Array();
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
var checkedNodes = treeObj.getCheckedNodes(true); // 獲取被選中的節點
$.each(checkedNodes,function(i,n){
jsonData.push({"roleid":"${roleId}","permissionid":n.id});
});
if(checkedNodes.length == 0){
layer.msg("請選擇分配許可,至少分配一個許可!", {time:1000, icon:5, shift:6});
}else{
var loadingIndex = -1 ;
$.ajax({
type : "POST",
contentType : 'application/json;charset=utf-8', //設置請求頭信息
dataType:"json",
data:JSON.stringify(jsonData),
url : "${CWF_PATH}/role/doAssignPermission.do",
beforeSend : function(){
loadingIndex = layer.msg('正在分配許可...', {icon: 16});
return true ;
},
success : function(result){
layer.close(loadingIndex);
if(result.success){
layer.msg("分配成功", {time:1000, icon:6});
}else{
layer.msg("分配失敗", {time:1000, icon:5, shift:6});
}
},
error : function(){
layer.msg("操作失敗!", {time:1000, icon:5, shift:6});
}
});
}
});
2.1 java類修改前的方法(list.get(0).getRoleid()取值的時候報錯)
@ResponseBody
@RequestMapping("/doAssignPermission")
public Object doAjaxDeleteRole(@RequestBody List<RolePermission> list){
AjaxResult result = new AjaxResult();
try {
roleService.addRolePermission(list.get(0).getRoleid(),list);
result.setSuccess(true);
} catch (Exception e) {
result.setSuccess(false);
result.setMessage("分配許可失敗");
e.printStackTrace();
}
return result;
}
2.2java文件修改后 的方法
@ResponseBody
@RequestMapping("/doAssignPermission")
public Object doAjaxDeleteRole(@RequestBody List<RolePermission> list){
AjaxResult result = new AjaxResult();
try {
String jsonObject=JSON.toJSONString(list.get(0));
RolePermission rolePermission= JSONObject.parseObject(jsonObject,RolePermission.class);
roleService.addRolePermission(rolePermission.getRoleid(),list);
result.setSuccess(true);
} catch (Exception e) {
result.setSuccess(false);
result.setMessage("分配許可失敗");
e.printStackTrace();
}
return result;
}
錯誤原因
程序走到doAjaxDeleteRole方法利用list.get(0).getRoleid()取得list里的第一個對象的值的時候報錯:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx,因為list里存放的不是RolePermission實體對象,而是LinkedHashMap,因此需要json轉換。
3 解決方式:從list中取出來的數據需要進行轉化成json格式字符串,然后再將該json格式字符串轉換成對象。
3.1使用json-lib對其進行轉換
pom.xml文件導入依賴
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.3</version>
<classifier>jdk15</classifier>
</dependency>
后台循環list代碼:
//遍歷list
for(RolePermission rolePermission:list){
// 將list中的數據轉成json字符串
JSONObject jsonObject=JSONObject.fromObject(polePermission);
//將json轉成需要的對象
RolePermission rolePermission = (RolePermission)JSONObject.toBean(jsonObject, RolePermission.class);
}
3.2使用fast-json對其進行轉換
pom.xml文件導入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.61</version>
</dependency>
java后台取值
//遍歷list
for(RolePermission rolePermission:list){
// 將list中的數據轉成json字符串
String jsonObject=JSON.toJSONString(object);
//將json轉成需要的對象
RolePermission rolePermission= JSONObject.parseObject(jsonObject,RolePermission.class);
}