最近在研究自动填充,就类似于淘宝那种的,输入MP之后自动回感应出来mp3, MP3好音质,MP3套...
jQuery有提供一种空间:autoComplete,今天先不讲这个,而是说说为了使用autoComplete,我首先需要实现ajax访问后台返回推荐类型,再绑定到下拉选项中。之前简单地搜了一下ajax+spring mvc,我之前一直认为这个是个很简单的东西;但是我整整调了一天,困扰我的是Response头的类型始终不是application/json,网上一搜,发现很多人跟我有同样的遭遇,尤其是使用spring 4.x之后,使用的jackson版本要升高,配置文件内容要发生变化... ...我尝试了很多种解决方案都是无果而终。
但是后来我想到了是不是考虑采用Response.write的方式来打出来,因为reponse是可以设置header的,这样我就可以手动把MediaType设置为application/json,在查询过程中,我看了一个帖子,突然脑洞打开:其实完全可以不依赖于Spring提供的狗屎Json,我们可以采用自己的json模式,比如Gson(小巧简单),将要输出的内容转化为Json,然后直接返回String,完事:
@RequestMapping(value = "/list", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String getUserList() {
logger.info("列表");
List<UserModel> list = new ArrayList<UserModel>();
UserModel um = new UserModel();
um.setId("1");
um.setUsername("sss");
um.setAge(222);
list.add(um);
Map<String, Object> modelMap = new HashMap<String, Object>(3);
modelMap.put("total", "1");
modelMap.put("data", list);
modelMap.put("success", "true");
Gson gson = new Gson();
return gson.toJson(modelMap);
}
我一直在想怎么样能够不那么依赖于Spring,他来做的事情里面就是他的机制,对于我们是黑盒。看到stackover里面的大牛们解答一些高深的spring问题,这帮哥们把源码估计都翻了遍吧。
不管怎么样,终于搞掂了。