我正在开发一个Spring Rest应用程序。我的一个方法是:
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody
Collection<Configuration> getConfigurationInJSON() {
Collection<Configuration> confList = new ArrayList<Configuration>();
...
我填写我的confList并将其发送给GET请求,它可以工作。但是,当我想将confList保存在HashMap中并在获得它的entrySet后发送它:
@RequestMapping(method = RequestMethod.GET)
public
@ResponseBody
Collection<Configuration> getAllConfigurationsInJSON() {
return configurationMap.values();
}
它给我406错误,所以这意味着有一个错误。这些集合之间有什么区别以及为什么第二个集合与第一个示例不同?
答案 0 :(得分:0)
为简单起见,您可以复制values()
集合吗?
new ArrayList<Configuration>(configurationMap.values());
只有我想到的是Spring期望可变的集合,但是不太明白为什么。很难说没有调试,请尝试启用org.springframework.web
完整日志记录。
答案 1 :(得分:0)
明显的区别是configurationMap.values()
是Set
。
您需要检查JSON编组是否期望返回List
并且无法封送Set
个实例,因为编组将检查返回值的实际类型而不是声明的返回方法的类型,即Collection
。
顺便说一句,日志中是否有关于此的线索?