求解一个Sprint Mvc Post多参数 提交时获取不到参数的问题

JsonRead 2018-06-26 11:26:29
如题 Java新手,用SpringBoot框架写了个接口,需要传递多参数,多个String类型的参数是可以获取到的,但是参数中有实体参数时,后台获取到的为Null,换了多种方式都不行,使用C# 的Action可以获取到参数,求解
Js调用代码

<script type="text/javascript">
function doPost5()
{
console.log("start");

var fileModuleKeyL = {
ModuleName: "abc",
ModuleKey:"123"
};

var fileGuidL = "xxxxxxxxxxxxxxx1111";


$.post("http://localhost:6503/doModel", { fileModuleKey: fileModuleKeyL, fileGuid: fileGuidL }, function (result) {
console.log(result);
});
}
</script>


Java代码

@RequestMapping(value = "/doModel",method = RequestMethod.POST)
public void doModel(
@RequestBody FileModuleKey fileModuleKey,
@RequestParam(value = "fileGuid", required = false) String fileGuid){
System.out.println(fileModuleKey.getModuleKey());
System.out.println(fileGuid);
}

...全文
217 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
JsonRead 2018-07-31
结贴了,自己解决的,增加一个包装类把参数都包在里面就可以了,谢谢楼上各位的解答
  • 打赏
  • 举报
回复
weixin_40852944 2018-06-28

var fileModuleKeyL = {
moduleName: "abc",
moduleKey:"123"
};

 
@RequestMapping(value = "/doModel",method = RequestMethod.POST)
public void doModel(FileModuleKey fileModuleKey,String fileGuid){
System.out.println(fileModuleKey.getModuleKey());
System.out.println(fileGuid);
}
  • 打赏
  • 举报
回复
qq_40365364 2018-06-28
没有你这种传法
  • 打赏
  • 举报
回复
JsonRead 2018-06-27
引用 4 楼 u013086172 的回复:
应该吧@RequestBody 去掉 因为你的传参方式不是body方式


引用 5 楼 gl74gs48 的回复:
$.post()的Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」,@RequestBody 用来接收JSON数据,肯定无法接收到数据,楼上正解


谢谢回答,所有的传值方式我都尝试过,修改Post Content-Type为Json,用RequestBody同样接收不到,@RequestBody 去掉用urlencoded也接收不到,单实体参数时可以接收到,多个参数时只能接收到String参数,实体参数为Null
  • 打赏
  • 举报
回复
nobuglady 2018-06-26
ModuleName: "abc",
ModuleKey:"123"
第一个字母小写
  • 打赏
  • 举报
回复
JsonRead 2018-06-26
Java中Model代码

/**
* FileModuleKey
* 模块的主键类
*/
@Data
public class FileModuleKey
{
/**
* Gets or sets 模块名称
*/
public String ModuleName;

/**
* Gets or sets 模块主键.
*/
public String ModuleKey ;
}
  • 打赏
  • 举报
回复
JsonRead 2018-06-26

C# 代码

[HttpPost]
public ActionResult PostMain(FileModuleKey fileModuleKey, string fileGuid)
{
try
{
Console.WriteLine("开始打印......");

Console.WriteLine(fileModuleKey.ModuleKey);
Console.WriteLine(fileModuleKey.ModuleName);
Console.WriteLine(fileGuid);

Console.WriteLine("结束打印");
return Json(true);
}
catch (Exception ex)
{
Console.WriteLine($"异常{ ex.Message }");
throw;
}
}

  • 打赏
  • 举报
回复
阿甘1976 2018-06-26
$.post()的Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」,@RequestBody 用来接收JSON数据,肯定无法接收到数据,楼上正解
  • 打赏
  • 举报
回复
u013086172 2018-06-26
应该吧@RequestBody 去掉 因为你的传参方式不是body方式
  • 打赏
  • 举报
回复
发帖
Web 开发

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
加入社区
帖子事件
创建了帖子
2018-06-26 11:26
社区公告
暂无公告