hashmap:java.lang.classcastexception:java.lang.long不能转换为java.lang.string

ni65a41a  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(477)

我正在尝试为我的web应用程序做简单的编辑,因为我从前端获取stringify数据,所以我将其转换为object,但随后我将id作为long值。我的代码可以很好地处理添加新数据,但每当我尝试编辑它时都会出错 java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String . 请检查我提供的截图。
控制器.java

@RequestMapping(value = "/product", method = RequestMethod.POST)
public String managePostProduct(@RequestParam(name = "data", required = false) String add,
        @RequestParam(name = "file") MultipartFile file,
        HttpServletRequest request) {
    try {
        JSONParser parser = new JSONParser();
        Object obj = parser.parse(add);
        Addproductdetails detail = new Addproductdetails();
        OurProducts mProduct = detail.addproduct(obj, file);

        if (mProduct.getId() == 0) {

            productDAO.addOurProducts(mProduct);

        } else {
            productDAO.update(mProduct);
        }

        if (!mProduct.getFile().getOriginalFilename().equals("")) {
            FileUploadUtility.uploadFile(request, mProduct.getFile(), mProduct.getCode());
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return "redirect:/manage/product?success=product";
}

addproductdetails,java

public OurProducts addproduct(Object obj , MultipartFile file) {
    ObjectMapper oMapper = new ObjectMapper();
    Map<String, String> prod = oMapper.convertValue(obj, HashMap.class);

    System.out.println("prod "+ prod);
    OurProducts product = new OurProducts();

    if (prod.containsKey("id")) {           
        System.out.println("product === " + prod.values());
    }

    int id = prod.containsKey("id") && !prod.get("id").isEmpty() ? Integer.parseInt((String) prod.get("id")) : 0;
    product.setId(id);
    product.setProduct_name(prod.get("product_name"));
    product.setProduct_info(prod.get("product_info"));
    product.setFile(file);
    return product; 
}

断点

请告诉我为什么我得到身份证作为长期价值?我该怎么修?

tjrkku2a

tjrkku2a1#

你越来越 id 来自类型为的客户端的字段 Long 把它放到一个 int 类型。如果你能改变 Product 同学们,我建议改一下它的名字 id 字段类型到 long 因此,不需要强制转换,而且在强制转换过程中您可能会面临数据丢失 longint .
顺便说一句,如果您不能更改代码或不想更改,您可以在这里解决问题:
而不是:

int id = prod.containsKey("id") && !prod.get("id").isEmpty() ? Integer.parseInt((String) prod.get("id")) : 0;

使用此选项:

int id = prod.containsKey("id") && !prod.get("id").isEmpty() ? (int) prod.get("id") : 0;

祝你好运

相关问题