【问题标题】:How do I post more than one parameter using spring @requestparam/@requestbody annotation in json format如何使用spring @requestparam/@requestbody注解以json格式发布多个参数
【发布时间】:2013-04-17 15:33:21
【问题描述】:

我想上传一个带有图像的项目对象,我是否可以从我的控制器传递我的项目的完整对象以及它的图像如果是,那么我该怎么做?我还需要一个来自客户端的 Json 模式。

我的以下项目对象的 Json 模式是什么。

Class Item{

String ItemID;
String ItemName;
String CategoryID;
List<Image> imagesList;

}

Class Image{

String imageId;
String imageTitle;
byte[] image;
}

还有一件事。请告诉我如何在我的控制器中传递两个参数。例如如果我想在请求正文中传递 Item 对象以及一个额外的参数,比如 String UserID。我该如何编写以下代码。

@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void add(@RequestBody Item myItem, String UserID) 

{ ...... }

如果我以 Json 格式传递请求,请告诉我怎么办。它会是什么样子?

{ "Item" : { "ItemID": "1", ......}, "UserID" : "hello"} 

会是这样还是什么?因为我试过了,所以我将对象和字符串设为 Null。我也用@RequestParam 尝试过,但在调试时同样得到了 NULL。

目前我正在处理这个问题。

Class ItemUserPost{
    Item item;
    String UserID;
}

我将此对象存储在 MongoDB 中。我的整个项目集合会与图像一起存储吗?或者我必须为此使用 MultiPart 和 GridFS API。如果相关问题已经发布,请参考。

请紧急帮忙。

提前致谢。

【问题讨论】:

  • 请任何人都可以帮助我,这是紧急的。

标签: spring mongodb spring-data


【解决方案1】:

请求正文只是一个正文。您不能在同一个正文中传递多个对象或参数。

有 2 次失误:

  1. 如果您使用的是 REST,则可以将用户 ID 放在 @RequestMapping(value = "{userId}") 上并从 URL 中获取。或者,您可以简单地将 UserId 作为查询参数放在您的 url 上。

  2. 继续使用您的 ItemUserPost 对象。

--

关于第二个问题:

是的,它将与图像一起存储您的收藏。

【讨论】:

  • 关于将图像从 iOS 上传到我的资源获取 @RequestParam 作为 CommonsMultipart 文件上传,我需要更多帮助。我的客户端 iOS 上的每件事都运行良好,但我收到 404 Not Found 响应。我发现它没有影响我在 API 服务上的资源。如果您想查看代码以获得更多说明,请告诉我。提前致谢。
  • 这是我的资源函数:@RequestMapping(value = "/storeimages", method = RequestMethod.POST) @ResponseStatus(HttpStatus.OK) public void storeItemImages(@RequestParam CommonsMultipartFile[] fileUpload) throws Exception { // Working of input stream &amp; storing it in DB }
  • 您的 web.xml 仅在 / 有映射的 Spring servlet?或者你把另一个上下文。这些问题中的大多数是 web.xml Spring 的 servlet 中的错误映射。您项目的背景以及您对该资源的完整背景是什么?抱歉,今天才回答。
猜你喜欢
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多