spring注解@ResponseBody处理ajax请求,json数据类型

最近做了一个spring+ajax 二级级联菜单,总是报各种错误,最后经过分析总结终于解决此问题,现在把问题展示给大家,以供分享。如有问题可以评论,肯定支持。

json需要引用的JSON包有:jackson-core-asl-1.9.13.jar,jackson-mapper-asl-1.9.13.jar,版本并不是固定的,只是这两个的版本一样就行了

controller层:

@RequestMapping(value = "branchMap")@ResponseBodypublic List<Temp> getBranchMap(HttpServletRequest request) {String tmp = request.getParameter("organizid");Long id = Long.parseLong(tmp);return serviceManager.getBranchMap(id);}

service层:

public List<Temp> getBranchMap(Long id) {return institutionsDao.getBranchMap(id);}

dao层:(其中Temp是临时类,就是institutions类想要的字段组成的类)

public List<Temp> getBranchMap(Long id) {List<Temp> lt = new ArrayList<Temp>();String sql = "select s.id,s.name from institutions s where s.parent=?";Session session = this.getSession();SQLQuery sqlQuery = session.createSQLQuery(sql);sqlQuery.setLong(0, id);sqlQuery.addScalar("id", Hibernate.LONG);sqlQuery.addScalar("name", Hibernate.STRING);sqlQuery.setResultTransformer(Transformers.aliasToBean(Institutions.class));List<Institutions> list = sqlQuery.list();if (list.size() <= 0) {Temp t = new Temp();t.setId(0L);if (id == -1) {t.setName("请先选择机构");} else {t.setName("该机构没有分支");}lt.add(t);return lt;}for (int i = 0; i < list.size(); i++) {Institutions ins = list.get(i);Temp t = new Temp();t.setId(ins.getId());t.setName(ins.getName());lt.add(t);}return lt;}

jsp层:

var val=$("#organization option:selected").val(); $.ajax({ type:"post", url:"${ctx}/account/user/branchMap", dataType:"json", async:false, data:{organizid:val}, success:function(data){ $("#branch").html(""); $.each(data,function(i,item){ $("#branch").append("<option value="+item.id+">"+item.name+"</option>"); }); } });

然后在对应的spring-mvc.servlet.xml中添加配置

<!–@ResponseBody之后返回字符串中中文可能会出现乱码 因为spingmvc默认是text/plain;charset=ISO-8859-1,,要支持中需做如下配置指定编码格式–>

<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><beanclass="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><!–返回字符串格式json–><value>application/json;charset=UTF-8</value></list></property></bean></list></property></bean>

天不负;卧薪尝胆,三千越甲可吞吴。

spring注解@ResponseBody处理ajax请求,json数据类型

相关文章:

你感兴趣的文章:

标签云: