@responseBody:注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,
通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的
效果等同于通过response对象输出指定格式的数据。
各公司应该都有自己的封装的json传输方法,但开发中,总有一天会觉得通用性不好,还是要回过头来,用我们的@responseBody。
这里也就写一下@responseBody返回除我们想要的值外添加传递其他值。
ajax:
function ceshi(){ $.ajax({ type:'get', url:'${ctx}/secondPhase/customCombotreeData2.pt?', success:function(data){ var flag = data[0].flag; console.log('flag:'+flag); var li = data[1]; for ( var int = 0; int < li.length; int++) { var id = li[int].id; console.log(int+':'+id); } } }); }
后台:
@RequestMapping("customCombotreeData2") @ResponseBody public List customCombotreeData2(){ Dmp p = this.getParamsAsDmp(); String id=(String)p.get("id"); if(id==null || id==""){ p.put("id", "0"); } //[{id=A省市重点工作, text=A省市重点工作, state=closed, parentid=0}, {id=B区主要领导批示和主要领导会议布置的重点工作, text=B区主要领导批示和主要领导会议布置的重点工作, state=closed, parentid=0}, {id=C一般性工作, text=C一般性工作, state=closed, parentid=0}, {id=D各局委办工作, text=D各局委办工作, state=closed, parentid=0}] List list=service.se_feileiTree2(p); Map map = new HashMap(); map.put("flag", 1); List li = new ArrayList(); li.add(0,map); li.add(1,list); System.out.println(li); return li; }
控制台输出: