搭建 Spring3+MyBatis+Rest+BootStrap+JBPM项目环境后,测试发现了一个操蛋的问题。
使用Spring MVC的自动类型转换为JSON时,后台数据List/Map获取完全正常,可是JS获取data报500错误。
后台无任何异常信息。
问题解决思路:
后台数据操作正常,数据返回前端时候异常,问题集中在Spring的jackson json转换上。
而Spring用了第三方的Jackson Json数据转换,异常信息的获取需要靠它,代码中加入如下部分:
1 /** 2 * 查询题库所有记录 3 * @param req 4 * @param model 5 * @return 6 */ 7 @RequestMapping 8 @ResponseBody 9 public Map<String, Object> getAllRecord(HttpServletRequest req, 10 ModelMap model) { 11 List<QuestionWh> allQuestions = questionWHService.selectAllQuestionWH(); 12 model.put("aaData",allQuestions); 13 model.put("iTotalRecords",allQuestions.size()); 14 model.put("iTotalDisplayRecords",allQuestions.size()); 15 16 // 测试返回对象的Jackson json转换 17 ObjectMapper om = new ObjectMapper(); 18 try { 19 om.writeValueAsString(allQuestions); 20 } catch (JsonGenerationException e) { 21 e.printStackTrace(); 22 } catch (JsonMappingException e) { 23 e.printStackTrace(); 24 } catch (IOException e) { 25 e.printStackTrace(); 26 } 27 28 return model; 29 }
顺利的打出了异常信息,如下:
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"])
异常找到,解决就很简单了。
时间: 2024-11-10 08:45:03