easyui-tree的三级级联动,我是通过拼接实现的
源码地址:点击打开链接
/**controller代码
* 生成省市区三级菜单
* @author awave
*
*/
@Controller
@RequestMapping("/awave")
public class RegionController {
@Resource
RegionService regionService;
@RequestMapping("/getNodesById")
public void getNodesById(Integer id,HttpServletResponse response) {
System.out.println("kaishi");
String str = "";
StringBuilder json = new StringBuilder();
List<Region> treeRoot = regionService.FindProvince();
// 获得根节点
if (treeRoot != null && treeRoot.size() != 0) {
json.append("[");
for (Region a : treeRoot) {
// 拼接根节点
json.append("{\"id\":" + String.valueOf(a.getId()));
json.append(",\"text\":\"" + a.getRegionName() + "\"");
// 获取根节点下的所有子节点
List<Region> treeList = regionService.FindCityOrDistrict(a.getId());
// 遍历子节点下的子节点
if (treeList != null && treeList.size() != 0) {
json.append(",\"children\":[");
for (Region t : treeList) {
json.append("{\"id\":" + String.valueOf(t.getId()));
json.append(",\"text\":\"" + t.getRegionName() + "\"");
json.append(",\"state\":\"open\"");
// 该节点有子节点
// 设置为关闭状态,而从构造异步加载tree
List<Region> tList = regionService .FindCityOrDistrict(t.getId());
if (tList != null && tList.size() != 0) {// 存在子节点
json.append(",\"children\":[");
for (Region c : tList) {
json.append("{\"id\":" + String.valueOf(c.getId()));
json.append(",\"text\":\""+ c.getRegionName() + "\"");
json.append("}");
json.append(",");
}
json.deleteCharAt(json.length()-1);
json.append("]");
}
json.append("}");
json.append(",");
}
json.deleteCharAt(json.length()-1);
json.append("]");
}
json.append("}");
json.append(",");
}
json.deleteCharAt(json.length()-1);
json.append("]");
str = json.toString();
try {
System.out.println("输出json数据"+str);
//解决中文response乱码
response.setHeader("Content-type", "text/html;charset=UTF-8");
//向客户端输出内容
response.getWriter().print(str);
} catch (IOException e) {
e.printStackTrace();
}
}
}
数据库