// 需要在web.xml多配置一个拦截
@RequestMapping("selectOne.json")
@ResponseBody
public HashMap<Object, Object> selectOnejson(String sqlId, HttpServletRequest request) {
@SuppressWarnings("unchecked")
HashMap<Object, Object> result = (HashMap<Object, Object>) MybatisUtils.selectOne(sqlId, SpringUtils.getParameter(request));
return result;
}
// .html后缀的不能使用spring自带的MappingJacksonHttpMessageConverter
@RequestMapping("selectOne.html")
@ResponseBody
public String selectOne(String sqlId, HttpServletRequest request) throws JsonGenerationException, JsonMappingException, IOException {
@SuppressWarnings("unchecked")
HashMap<Object, Object> result = (HashMap<Object, Object>) MybatisUtils.selectOne(sqlId, SpringUtils.getParameter(request));
ObjectMapper o = new ObjectMapper();
return o.writeValueAsString(result);
}
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>*.json</url-pattern>
</servlet-mapping>
我觉得spring mvc中的url这样处理不太好,也许可以指定某个属性,让它不根据url判断返回的内容是格式,虽然ajax提交时已经指定为json,dataType:"json",但不起作用。最后还是情愿手工转成String返回来。