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

  • 相关阅读:
    【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
    【模拟题(63550802...)】解题报告【贪心】【拓扑排序】【找规律】【树相关】
    【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
    IMemoryBufferReference and IMemoryBufferByteAccess
    SoftwareBitmap and BitmapEncoder in Windows.Graphics.Imaging Namespace
    Windows UPnP APIs
    编译Android技术总结
    Windows函数转发器
    Two Ways in Delphi to Get IP Address on Android
    Delphi Call getifaddrs and freeifaddrs on Android
  • 原文地址:https://www.cnblogs.com/konglxblog/p/14095768.html
Copyright © 2011-2022 走看看