2015-05-15 29 views
1

我的春天控制器的方法看起来是这样的:空请求主体提供了400错误

@RequestMapping(method=RequestMethod.PUT, value="/items/{itemname}") 
public ResponseEntity<?> updateItem(@PathVariable String itemname, @RequestBody byte[] data) { 
    // code that saves item 
} 

这工作得很好除了当试图把零长度的项目,然后我得到一个HTTP错误:400错误请求。在这种情况下,我的方法从不被调用。我期待应该使用设置为零长度数组的“data”参数调用该方法。

即使Content-Length为0,我是否可以进行请求映射?

我正在使用Spring框架版本4.1.5.RELEASE。

回答

2

设置new byte[0]不会在请求主体上发送任何内容。如果您的Spring MVC日志TRACE你应该会看到一个消息,说Required request body content is missing作为的根本原因你400 Bad Request

要支持你的情况,你应该让你的@RequestBody可选

@RequestMapping(method=RequestMethod.PUT, value="/items/{itemname}") 
public ResponseEntity<?> updateItem(@PathVariable String itemname, @RequestBody(required = false) byte[] data) { 
    // code that saves item 
}