如何使用json格式的spring @ requestparam / @ requestbody注释发布多个参数

时间:2013-04-17 15:33:21

标签: spring mongodb spring-data

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

我的后续项目对象的Json模式是什么。

Class Item{

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

}

Class Image{

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

还有一件事。请告诉我如何在Controller中传递两个参数。例如如果我想在Request Body中传递Item对象以及一个额外的参数,请说String UserID。我可以写下面的代码。

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

{ ...... }

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

{ "Item" : { "ItemID": "1", ......}, "UserID" : "hello"} 
它会是这样还是什么?因为我试过它我得到的对象和字符串为空。我也尝试使用@RequestParam,但在调试时同样为NULL。

目前我正在处理此问题。

Class ItemUserPost{
    Item item;
    String UserID;
}

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

请帮忙。

先谢谢。

1 个答案:

答案 0 :(得分:0)

请求机构它只是一个机构。您无法在同一个主体中传递多个对象或参数。

这有2次失误:

  1. 如果您正在使用REST,则可以将UserID放在@RequestMapping(value = "{userId}")上并从URL获取。或者,您只需将UserId作为查询参数放在您的网址上。

  2. 继续使用ItemUserPost对象。

  3. -

    对于第二个问题:

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