我正在Spring3项目中尝试Scala,并且当我使用@ResponseBody返回地图时,我得不到我期望的结果。我包括在Java中的工作示例以及我尝试在斯卡拉斯卡拉,@ResponseBody和地图
// This is Java
@RequestMapping(value="/pbx.admin", method=RequestMethod.GET)
public @ResponseBody Map<String, Object> getInfo2(HttpServletRequest request, Model model){
Map<String, Object> map = new HashMap<String, Object>();
map.put("pbx", "admin");
map.put("method", "s");
return map;
}
化java返回JSON与定义的PBX &方法,这是我很期待。
// This is Scala
@RequestMapping(value= Array("/pbx.admin"),
method=Array(RequestMethod.GET))
@ResponseBody
def getInfo2() = {
Map("pbx" -> "admin", "method" -> "s")
}
斯卡拉返回不同的东西,但:
{
empty: false,
traversableAgain: true
}
我需要做什么才能让我的映射键/值呢?
为了额外的功劳,有没有更好的'scala方式'来做到这一点?谢谢!
谢谢!这工作很好。 – samspot
因此,当Spring MVC没有将scala.collection.Map识别为Map时,它决定应用它用来序列化JavaBean的策略,即找到所有符合JavaBean约定的方法,并将它们用作JSON对象。有两种方法符合这些标准:'isEmpty'和'isTraversableAgain'。 –
@KenBloom:确切地说,对于伟大的评论+1。当你尝试返回Scala的'List'时会发生类似的事情。 –