springboot中PostMapping正常接收json参数后返回404问题
作者:陆沙 发布时间:2021-07-22 20:46:28
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。
@PostMapping注解解析
开发过程IDEA提示如将
@RequestMapping(value="/abc" , method = “RequestMethod.POST”)
替换成@PostMapping。现对@PostMapping的实现。
@PostMapping是一个复合注解,Spring framework 4.3引入了@RequestMapping注释的变体,以更好地表示带注释的方法的语义,作为@RequestMapping(method = RequestMethod.POST)的快捷方式。
也就是可以简化成@PostMapping(value="/abc" )即可,主要是方便识记。
下面很多方法都是对应着@RequestMapping的标记的别名。
@RequestMapping(value = “”, path = “”, params = “”, headers = “”,consumes = “”, produces = “”)
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.POST)
public @interface PostMapping {
/**
* RequestMapping 的别名,
*/
@AliasFor(annotation = RequestMapping.class)
String name() default "";
/**
*RequestMapping#value的别名, 默认为空字符串,一般需要自己填写
*/
@AliasFor(annotation = RequestMapping.class)
String[] value() default {};
/**
* RequestMapping#path的别名
*/
@AliasFor(annotation = RequestMapping.class)
String[] path() default {};
/**
* RequestMapping#params的别名
*/
@AliasFor(annotation = RequestMapping.class)
String[] params() default {};
/**
* RequestMapping#headers的别名
*/
@AliasFor(annotation = RequestMapping.class)
String[] headers() default {};
/**
* RequestMapping#consumes的别名
*/
@AliasFor(annotation = RequestMapping.class)
String[] consumes() default {};
/**
* RequestMapping#produces的别名
*/
@AliasFor(annotation = RequestMapping.class)
String[] produces() default {};
}
其他变体如下:
@GetMapping、@PutMapping、@PatchMapping和@DeleteMapping,与@PostMapping实现类似
来源:https://blog.csdn.net/pxy7896/article/details/107109613


猜你喜欢
- MyBatis Xml映射文件字符串替换字符串替换默认情况下,使用 #{} 格式的语法会导致 MyBatis 创建 PreparedStat
- 目录Future -> 代表的是未来的一个凭据AsynFuture -> Future具体实现类FutureService -&
- 一、前言序列化:将对象转换为二进制序列在网络中传输或保存到磁盘反序列化:从网络或磁盘中将二进制序列转换为对象注意:对象必须实现Seriali
- JoinPoint的getSignature方法在使用springboot写aop的时候,有个JoinPoint类,用来获取代理类和被代理类
- 有些时候我们做的程序需要进度条,而vs提供的控件不是我们想要的。先看效果图:进度条闪烁动画,当然背景可设为Transparent之前想手绘进
- 难点是泛型如何转换一、arrayList<Map<String, Object>>转化json字符串,存入redis
- C#提升管理员权限修改本地Windows系统时间在桌面应用程序开发过程中,需要对C盘下进行文件操作或者系统参数进行设置,例如在没有外网的情况
- 1.IO流介绍IO流可以用到的地方很多,就比如设计模式、下载、传输等等。学好IO流,为之后的进一步学习打下基础,那么,先来说说什么是流?流是
- Exception e中e的getMessage()和toString()方法的区别:示例代码1:public class TestInfo
- 1 前言前文已经讲述了Spring BeanFactory 与 FactoryBean 的区别详情,
- 目录一、为什么用DiskLruCache1、LruCache和DiskLruCache2、为何使用DiskLruCache二、DiskLru
- 本文实例讲述了java编程实现根据EXCEL列名求其索引的方法。分享给大家供大家参考,具体如下:原理:[a1-z26]*26^n-1 + [
- 文章描述以下主要还是使用到了ffmpeg命令,分别实现了给视频添加图片水印以及文字水印。开发环境.NET Framework版本:4.5开发
- ListView和GridViewListView,列表视图,是Android中最重要的组件之一,几乎每个Android应用中都会使用Lis
- 上次面试中遇到的一个问题,问到System.out.println()中的out是不是内部类,当时就给问蒙了,直观感觉out应该是Syste
- 目录迭代器原理:什么是迭代器,使用迭代器的好处?迭代器怎么实现的?迭代器的陷阱?为什么会产生这样的错误?遍历map的四种方式迭代器原理:什么
- java8 Stream list to Map key 重复 value合并到Collectio关于把list转换成key value的m
- 熔断与降级为什么在RPC环节中有熔断以及降级的需求,详细的原因这里不多解释,从网上搜索一张图做示意。熔断我理解熔段主要解决如下几个问题:当所
- Java泛型映射不同的值类型详解前言:一般来说,开发人员偶尔会遇到这样的情形: 在一个特定容器中映射任意类型的值。然而Java 集合API只
- 环境JDK 1.8Spring Boot 2.3.0.RELEASEMaven 3.6.1H2 数据库用户名密码登录首先,我们用 Sprin