您的位置:首页 > 编程语言 > Java开发

SpringMVC3中返回json字符串时500 Internal Server Error的处理方案

2015-05-14 10:55 423 查看
搭建 Spring3+MyBatis+Rest+BootStrap+JBPM项目环境后,测试发现了一个操蛋的问题。
使用Spring MVC的自动类型转换为JSON时,后台数据List/Map获取完全正常,可是JS获取data报500错误。
后台无任何异常信息。

问题解决思路:
后台数据操作正常,数据返回前端时候异常,问题集中在Spring的jackson json转换上。
而Spring用了第三方的Jackson Json数据转换,异常信息的获取需要靠它,代码中加入如下部分:

/**
* 查询题库所有记录
* @param req
* @param model
* @return
*/
@RequestMapping
@ResponseBody
public Map<String, Object> getAllRecord(HttpServletRequest req,
ModelMap model) {
List<QuestionWh> allQuestions = questionWHService.selectAllQuestionWH();
model.put("aaData",allQuestions);
model.put("iTotalRecords",allQuestions.size());
model.put("iTotalDisplayRecords",allQuestions.size());

// 测试返回对象的Jackson json转换
ObjectMapper om = new ObjectMapper();
try {
om.writeValueAsString(allQuestions);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return model;
}


顺利的打出了异常信息,如下:

org.codehaus.jackson.map.JsonMappingException: No serializer found for class java.io.ByteArrayInputStream and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.ArrayList[0]->java.util.HashMap["CREATETIME"]->oracle.sql.TIMESTAMP["stream"])


异常找到,解决就很简单了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐