springboot-PostMapping正常接收json参数后返回404

问题描述

js中传递json数据给后端,后端可以正常接收参数,但返回404。
js

                function rootConfirm(ids, types) {
                    $.tool.confirm("确定结束" + options.modalName + "?", function () {
                        $.ajax({
                            type: "post",
                            url: options.confirmUrl,
                            traditional: true,
                            data: {
                                'ids': ids,
                                'types': types
                            },
                            success: function (json) {
                                $.tool.ajaxSuccess(json);
                                $.tableUtil.refresh();
                            },
                            error: $.tool.ajaxError
                        });
                    }, function () {}, 5000);
                }

后台

 @RequiresPermissions(value = {"root_orders:confirm", "root_orders:batchConfirm"}, logical = Logical.OR)
 @PostMapping(value="/root_orders/confirm")
 public ResponseVO rootConfirmOrder(Long[] ids, String[] types) {
  if (ids == null || types == null)
   return ResultUtil.error(500, "请至少选择一个订单");
  for (int i = 0; i < ids.length; i++) {
   /*可以正常打印*/
   System.out.println("" + ids[i] + ":" + types[i]);
  }

  return ResultUtil.success("成功结束 [" + ids.length + "] 个订单");
 }

解决

添加**@ResponseBody**注解。因为我的函数,所在的类注解是@Controller,但函数是要返回数据而非视图的。

补充

@RestController
这个注解相当于@ResponseBody 和 @Controller两个注解的组合,不返回视图,只返回数据。如果一个类上加了这个注解,那么这个类的函数都是返回不了视图的,return “redirect:/XXX/details”;也会只在页面上显示return的字符串。解决方法是把类上的注解改为@Controller,然后给不返回视图,只返回数据的函数加上注解@ResponseBody。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值