spring 如果当前请求不是异步模式,则调用此方法是非法的

yftpprvb  于 2022-10-30  发布在  Spring
关注(0)|答案(1)|浏览(329)

发生的错误:

  1. {
  2. "status" : 1,
  3. "code" : 0,
  4. "message" : "It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)",
  5. "param" : null,
  6. "data" : null
  7. }

与错误发生相关的代码:

  1. @RestController
  2. @RequestMapping(value = "/cashier/v1")
  3. public class PayController {
  4. @ApiOperation("pay for shop")
  5. @GetMapping(value = "/pay")
  6. public ResponseVO<PayResponseVO> pay(ShopPayRequestVO requestVO, HttpServletRequest request) {
  7. return payService.pay(requestVO, request);
  8. }
  9. }
  10. @Service
  11. @Slf4j
  12. public class PayServiceImpl implements IPayService {
  13. @Override
  14. public ResponseVO<PayResponseVO> pay(ShopPayRequestVO requestVO, HttpServletRequest request) throws AuthorizationException {
  15. log.info("pay request param:{}", JSON.toJSONString(requestVO));
  16. PayResponseVO vo = new PayResponseVO();
  17. ......
  18. vo.setOrderNo(businessOrderNo);
  19. vo.setShopId(requestVO.getShopId());
  20. log.info("pay response param:{}", JSON.toJSONString(vo));
  21. return ResponseVO.success(vo);
  22. }
  23. }
  24. @Data
  25. public class PayResponseVO {
  26. private Object payInfo;
  27. private String orderNo;
  28. private String shopId;
  29. }

单步调试所有代码都能正常执行,但前端还是有错误,我遇到了这个错误,但网上没有合适的解决方案,我自己解决了,下面分享解决方案

7ajki6be

7ajki6be1#

我的项目中解决这个问题的办法:
PayResponseVO. Java类需要实现可序列化接口

  1. @Data
  2. public class PayResponseVO implements Serializable {
  3. private static final long serialVersionUID = -7991519952738359328L;
  4. private Object payInfo;
  5. private String orderNo;
  6. private String shopId;
  7. }

相关问题