springboot 接受一个对象参数,用接口Model model 返回数据 报 No serializer found for class org.springframework.....

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.validation.DefaultMessageCodesResolver and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

分析问题:

    第一由于是接受对象参数没有进行序列化,就是对象实现implement Serializable ,实现序列化,没有写公共的get,set 方法。
    第二由于是接受对象参数是空的,前端并没有传参数过来,接口model 并接收了 该bean 序列化失败。
    总体来说是 没有找到对象序列化,序列化失败,就是报错说得 FAIL_ON_EMPTY_BEANS,网上建议把这个属性改成false,但是不建议这么干,因为这个序列化是全局的,改了这个东西,其它引用到的地方也需要做相应更改。

最好的办法:

    解决方案一:
    如果接收的对象参数序列化基本没有什么问题了,那就把Model 从方法括号拿下来,放到方法体里面,重新new一个对象
    Model model = new ConcurrentModel();
    model.addAttribute("属性",相应属性)
    返回给前端即可。
    
    解决方案二:
     把接收参数对象不作为序列化对象,也就是是在返回数据给前端时,把它相应属性判断一下,如果为空的话,不作为序   列化即可。比如:前端需要传一个Teacher 对象过来,里面有三个属性 name,age,sex,那么前端没有传参数过来,此时你需要把接收的name,age,sex,重新返回给前端。没有传就是空值,就不要入参到model 即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值