zoukankan      html  css  js  c++  java
  • java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx

    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);
    }

  • 相关阅读:
    bzoj1966:[AHOI2005]病毒检测
    bzoj2938:[Poi2000]病毒
    bzoj3172:[Tjoi2013]单词
    luoguP3808[模板]AC自动机(简单版)
    luoguP3796[模板]AC自动机(加强版)
    Java 基本类型、封装类型、常量池、基本运算
    Java 内存分配(转)
    Java 数组ArrayList语法
    Java的修饰、继承、接口、抽象类
    2019数模国赛有感
  • 原文地址:https://www.cnblogs.com/konglxblog/p/14095768.html
Copyright © 2011-2022 走看看