我正在尝试为我的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;
}
断点
请告诉我为什么我得到身份证作为长期价值?我该怎么修?
1条答案
按热度按时间tjrkku2a1#
你越来越
id
来自类型为的客户端的字段Long
把它放到一个int
类型。如果你能改变Product
同学们,我建议改一下它的名字id
字段类型到long
因此,不需要强制转换,而且在强制转换过程中您可能会面临数据丢失long
至int
.顺便说一句,如果您不能更改代码或不想更改,您可以在这里解决问题:
而不是:
使用此选项:
祝你好运