【Dto无法获取到前端的集合List数据】

作者分享了在使用瑞吉外卖项目时,遇到前端传入的菜品集合Dto无法获取数据的问题。经过排查,发现前端数据确实存在但未正确绑定到Dto的属性上。通过在Dto类中加入@JsonProperty注解指定字段名,解决了前端空集合赋值导致的问题。
摘要由CSDN通过智能技术生成

项目场景:

在跟着瑞吉外卖视频做的时候,一个很简单的套餐需求,因为涉及到新增两个表的数据,所以通过dto来实现对前端数据的接收,在数serviceimp中实现两个表的数据新增。


问题描述

昨天晚上在跟着B站视频做瑞吉外卖的时候,前端传进来的数据菜品集合,后端dto一直拿不到,而且检查过非常多遍,一样的代码,更加奇怪的是,在上一个流程中也有一个dto,两个dto写法一样,就是后面的dto集合一直拿不到数据

一下是Dto中代码

public class setMealDto extends Setmeal{
   
    private List<SetmealDish> setmealDishes;
    private String CategoryName;
}

这里是Controller中对实现类方法调用

    public R<String> saveMeal(@RequestBody setMealDto mealDto){
        setmealService.saveWithDto(mealDto);
        return R.success("新增成功");
    }


原因分析:

首先我检查了前端是否传了数据进来

在前端F12呼出检查框,看到

证明前端确实是有数据的。

在方法开始是打断点

在断点中发现dto传进来就没有数据,这说明问题一定是出在dto类中的,因为其他的不是dto类的数据是有的,证明controller中的接收方法是没有问题的。


 

解决方案:

在Dto类中元素加上@JsonProperty(value = "setmealDishes")

加完后dto的代码如下

@Data
public class setMealDto extends Setmeal{
    @JsonProperty(value = "setmealDishes")
    private List<SetmealDish> setmealDishes;
    private String CategoryName;
}

此时直接把数据绑定,这里的value值要与前端参数名称一致。

终于得到数据了。

至于原因我感觉是不是前端传的数据有一个空集合dishList也是list,把空的赋值给了dto中的list,因为dto的写法一定是正确的,因为另一个dto写法一模一样能够接收list数据,虽然但是,猜测而已,bug就这样解决了。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值