public ResponseEntity<String> findBy(Integer Id ) {
List<Category> categorys = getcategorys(Id );
String ss="";
ss+="[";
for( Category category : categorys )
{
ss+="{";
//ss += ""id": ""+category.getId()+"","text": ""+category.getName().toString()+"","iconCls": "icon-ok","state": "closed"";;
List<Category> cs = getcategorys( category.getId() ); //判断当前节点是否还有子节点
if(cs.size()==0){ //没有子节点 设置 state 为空
ss+=String.format(""id": "%s", "text": "%s", "iconCls": "", "state": """, category.getId() , category.getName());
}else{ // 还有子节点 设置 state为closed
ss+=String.format(""id": "%s", "text": "%s", "iconCls": "", "state": "closed"", category.getId() , category.getName());
}
ss+="},";
}
ss=ss.substring(0, ss.length() - 1);
ss+="]";
return super.responseString(ss); //字符编码转换
}
大致一个流程就是前台传来ID,然后获取到实体对象,然后对实体进行循环,然后进行字符串处理这里设置state的意义主要在于让 easyui 的tree可以知道当前节点是否为最低级节点,然后在前面显示不同的图标。
总结:
就是这个小东西,折腾了我好几天,呵呵,因为俺太笨了。不过还好最后搞懂了,也理解了很多东西。
以前一直觉得JSON这东西很神秘,现在觉得它还是有规律的。
使用easyui tree的重点之一,就是对JSON数据的处理,有两种方式可以实现:第一就是使用String的format方法。这个大家可以去网上参考一下相关的API等等,我第一次写错了,字符串的占位符应该是 %s 我写成了 {0} 找了半天,才知道问题所在。 第二种方式,就是我上面注释掉的那一行,直接使用字符串拼接。
然后上面获取当前节点的所有父节点的时候,又纠结了半天,去网上找了很多代码,都不能用,最后还是自己想了一招,才得以解决。
优点:可以使用异步加载,支持无限级。
缺点:太繁琐,对后台的数据格式要求过高。










