采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
根据调试信息,可以看到,未知的productCategory,第二个图是前端传的表单信息
然后我就去找 product实体类中的属性,
可以看到是一致的, 但我调试了几次,仍然是相同的问题,麻烦问一下老师,问题出在哪? 感谢!
老师, 我好像找到了问题的所在,但是我有点想不通。 下面图 很诡异,我特意写了个demo,专门测试这个json转product实体类,
然后我去product实体类中 查看属性,如下图
导致测试失败,字符串中 如果将productCategory 改成category,就成功了,另外,我发现即使我怎么改实体类中的属性,比如 productName ==> productNames, 在测试时,通过从失败结果中 查看 13 个属性,仍然是productName , 很诡异呀, 我改了实体类的属性,测试返回的结果,仍然没有变,这也就导致了,我怎么改变实体类中productCategory 一直会报错的原因! 我现在不明白的是 为什么怎么改变属性,序列化 反序列化之后,属性仍然不会变?
非常诡异的问题,我也第一次碰到,但是实在大赞同学的调试定位问题的能力,还懂得通过hardcode的方式去调试,难能可贵,已经很优秀了。同学看看你的Getter,只要Getter名字没改,那么一般都不会改变的呢,建议getter setter和私有变量的名字要保持一致。然后同学可以通过console输出的项目路径,去到真实发布该项目的地方,一般是(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps)类似这种路劲,去到里面,找到你的Product.class文件,然后用eclipse打开(因为eclipse默认会自动逆解码class文件,如果不行,建议用反编译工具打开class文件查看源码),看看class文件里面的成员变量是否名字有变更,得试试,加油
同学好,这个问题比较奇怪,没咋遇到过,感觉jackson没认这个field,同学可以clean下tomcat试试,然后也可以复制粘贴我的实体类,clean tomcat试试
package com.imooc.o2o.entity; import java.util.Date; import java.util.List; /** * 商品实体类 * * @author xiangze * */ public class Product { // 主键ID private Long productId; // 商品名 private String productName; // 商品简介 private String productDesc; // 简略图 private String imgAddr; // 原价 private String normalPrice; // 现价(推广价格) private String promotionPrice; // 权重,越大越排前显示 private Integer priority; // 商品积分 private Integer point; // 创建时间 private Date createTime; // 最近一次的更新时间 private Date lastEditTime; // 0.下架 1.在前端展示系统展示 private Integer enableStatus; // 图片详情图列表,跟商品是多对一的关系 private List<ProductImg> productImgList; // 商品类别,一件商品仅属于一个商品类别 private ProductCategory productCategory; // 店铺实体类,标明商品属于哪个店铺 private Shop shop; public Long getProductId() { return productId; } public void setProductId(Long productId) { this.productId = productId; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public String getProductDesc() { return productDesc; } public void setProductDesc(String productDesc) { this.productDesc = productDesc; } public String getImgAddr() { return imgAddr; } public void setImgAddr(String imgAddr) { this.imgAddr = imgAddr; } public String getNormalPrice() { return normalPrice; } public void setNormalPrice(String normalPrice) { this.normalPrice = normalPrice; } public String getPromotionPrice() { return promotionPrice; } public void setPromotionPrice(String promotionPrice) { this.promotionPrice = promotionPrice; } public Integer getPriority() { return priority; } public void setPriority(Integer priority) { this.priority = priority; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getLastEditTime() { return lastEditTime; } public void setLastEditTime(Date lastEditTime) { this.lastEditTime = lastEditTime; } public Integer getEnableStatus() { return enableStatus; } public void setEnableStatus(Integer enableStatus) { this.enableStatus = enableStatus; } public Integer getPoint() { return point; } public void setPoint(Integer point) { this.point = point; } public List<ProductImg> getProductImgList() { return productImgList; } public void setProductImgList(List<ProductImg> productImgList) { this.productImgList = productImgList; } public ProductCategory getProductCategory() { return productCategory; } public void setProductCategory(ProductCategory productCategory) { this.productCategory = productCategory; } public Shop getShop() { return shop; } public void setShop(Shop shop) { this.shop = shop; } }
必要的时候,可以先使用链接里的ignore方法试试
https://blog.csdn.net/isea533/article/details/33397735?utm_source=tuicool&utm_medium=referral
然后再调试看看,product里面有没有转有productCategory
赞同学的调试能力
嗯嗯 好的,谢谢老师,我看一下~, 辛苦了
老师, 由于这个回答没有办法添加图片,因此我在上面写了回答,辛苦老师看一下,感谢!
登录后可查看更多问答,登录/注册
SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需
2.3k 47
2.3k 41
3.2k 40
2.3k 39
2.0k 37
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号