请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

新司机注册代码和老师的一样,但是发起feign请求时,客户端接收不到参数,实体类里参数值都为null

feign的客户端(bff-driver)

@FeignClient(value = "hxds-dr")
public interface DrServiceApi {
    @PostMapping("/driver/registerNewDriver")
    public R registerNewDriver(@RequestBody RegisterNewDriverForm form);
}
@RestController
@RequestMapping("/driver")
@Tag(name = "DriverController", description = "司机模块Web接口")
public class DriverController {
    @Resource
    private DriverService driverService;

    @PostMapping("/registerNewDriver")
    @Operation(summary = "新司机注册")
    public R registerNewDriver(@RequestBody @Valid RegisterNewDriverForm form) {
        long driverId = driverService.registerNewDriver(form);
        //在SaToken上面执行登陆,实际上就是缓存userId,然后才有资格拿到令牌
        StpUtil.login(driverId);
        //生成Token令牌字符串(已加密)
        String token = StpUtil.getTokenInfo().getTokenValue();
        return R.ok().put("token", token);
    }
}
@Service
public class DriverServiceImpl implements DriverService {

    @Resource
    private DrServiceApi drServiceApi;

    @Override
    @Transactional
    @LcnTransaction
    public long registerNewDriver(RegisterNewDriverForm form) {
        R r = drServiceApi.registerNewDriver(form);
        long userId = Convert.toLong(r.get("userId"));
        return userId;
    }
}

feign的服务端

@RestController
@RequestMapping("/driver")
@Tag(name = "DriverController", description = "司机模块Web接口")
public class DriverController {

    @Resource
    private DriverService driverService;
    
	@PostMapping("/registerNewDriver")
    @Operation(summary = "新司机注册")
    public R registerNewDriver(@Valid @RequestBody  RegisterNewDriverForm form) {
        Map param = BeanUtil.beanToMap(form);
        String userId = driverService.registerNewDriver(param);
        return R.ok().put("userId", userId);
    }
}

报错如下(服务端hxds-dr)

2022/11/10 10:29:22 ERROR 执行异常
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 3 errors
Field error in object ‘registerNewDriverForm’ on field ‘photo’: rejected value [null]; codes [NotBlank.registerNewDriverForm.photo,NotBlank.photo,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [registerNewDriverForm.photo,photo]; arguments []; default message [photo]]; default message [photo不能为空]
Field error in object ‘registerNewDriverForm’ on field ‘nickname’: rejected value [null]; codes [NotBlank.registerNewDriverForm.nickname,NotBlank.nickname,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [registerNewDriverForm.nickname,nickname]; arguments []; default message [nickname]]; default message [nickname不能为空]
Field error in object ‘registerNewDriverForm’ on field ‘code’: rejected value [null]; codes [NotBlank.registerNewDriverForm.code,NotBlank.code,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [registerNewDriverForm.code,code]; arguments []; default message [code]]; default message [code不能为空]

正在回答

2回答

我也有遇到这个错误,不知道和你的情况是否一样,我是注解引用的时候引用错了,@RequestBody应该引用

import org.springframework.web.bind.annotation.RequestBody;

引用成swagger的那个就接收不到参数了。

0 回复 有任何疑惑可以回复我~
  • 提问者 曹学习 #1
    真的是,万分感谢
    回复 有任何疑惑可以回复我~ 2023-05-05 09:12:51
神思者 2022-11-10 11:37:56

你先给bff子系统的web方法设置断点,看一下调用司机子系统之前有没有接收到小程序提交的数据

0 回复 有任何疑惑可以回复我~
  • 提问者 曹学习 #1
    bff层能接受到数据,但是通过feign调用,在hxds-dr那边接受不到参数了,全是null
    回复 有任何疑惑可以回复我~ 2022-11-10 12:07:15
  • 神思者 回复 提问者 曹学习 #2
    你检查一下司机子系统的代码是不是写的不对,要是还不行,你完整导入我的所有后端项目,如果我的项目运行没问题,说明还是你项目哪里的代码细节有问题
    回复 有任何疑惑可以回复我~ 2022-11-11 09:24:48
  • 提问者 曹学习 回复 神思者 #3
    老师解决不了了,对照着源码比对好多遍了,还是找不出问题。bff层能拿到数据的,传到hxds-dr层对象里三个参数都是null,我自己写了一个test测试接口也是一样拿不到数据
    回复 有任何疑惑可以回复我~ 2022-11-14 22:58:17
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号