在spring mvc controller中获得不支持的媒体类型

时间:2015-10-08 07:27:01

标签: java spring spring-mvc

我写了一个控制器。我只是修改了它来接受对象列表而不仅仅是一个对象。所以我创建了一个包含原始对象列表的包装类。但在此之后我得到415 - 不支持的媒体类型。我无法弄清楚为什么会发生这种情况。尝试了几乎所有我能找到的建议。

控制器类:

 @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> addCPCodeUser(HttpServletRequest request,
        @RequestBody CPCodeUserWrapper users) {

包装类:

public class CPCodeUserWrapper {

   private List<CPCodeUser> users;

   .... setters and getters ...

}

原班:

public class CPCodeUser {

   private String userId;
   private String name;
   List<String> roles;
   .... setters and getters....
}


url - v1/users/
JSON : 
    {
"users" : [{
                    "userId" : "user1",
                    "roles" : ["role1", "role2"]
        },{
                    "userId" : "user2",
                    "roles" : ["role1", "role2"]
        }]
 }

2 个答案:

答案 0 :(得分:0)

你的POJO没有参数构造函数吗?当JSON库无法实例化对象并且异常被spring混淆时,我遇到了非常模糊的错误。

您是否正在使用MockMVC框架来测试您的控制器?我发现单元测试通常会在部署应用程序时提供更明确的例外

答案 1 :(得分:0)

您可以尝试修改CPCodeUser,如下所示:

 public class CPCodeUser {

   private String userId;
   private List<String> roles;
   .... setters and getters....
}