jeecg版本3.7.2
效果:
主要照抄jeecg demo里常用示例的树编辑。
数据库里建两个表,一个cfg_tree定义左边的树,一个cfg放右边的表单数据。 两个表直接用jeecg的在线开发online表单开发,创建表单再代码生成。
cfg表没啥特殊操作,就普通表单建。然后自己在cfg表里面加一个字段parentcfgid,作为上级配置项。parentcfgid的值就复制上级配置项的id。
代码也要对应修改。在CfgTreeEntity 里加上上下级配置项和对应getter,setter。parentcfgid与上级配置项对应。
private CfgTreeEntity TSPCfg;//上级配置项
private List TSCfgs = new ArrayList();
//下属配置项
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentcfgid")//对应parentcfgid和上级配置项
public CfgTreeEntity getTSPCfg() {
return this.TSPCfg;
}
public void setTSPCfg(CfgTreeEntity TSPCfg) {
this.TSPCfg = TSPCfg;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TSPCfg")
public List getTSCfgs() {
return TSCfgs;
}
public void setTSCfgs(List tSCfgs) {
TSCfgs = tSCfgs;
}
在菜单管理里配置页面。
cfgztree返回页面cfgztree.jsp。里面布置easyui-layout左右分栏,加载树,定义树的左击事件。树的加载调用cfgTreeController里面getcfgTreeData和getTreeData两个方法。树左击调用cfgTreeController里update方法,update方法加载cfgList.jsp。可以传参在datagrid里面自定义右边表单的查询数据。
在cfgTreeController.java页面加入
@RequestMapping(params = "cfgztree") //CMDB模型配置
public ModelAndView cfgztree(HttpServletRequest request) {
return new ModelAndView("com/jeecg/cfg/cfgztree");
}
@RequestMapping(params="getcfgTreeData",method ={RequestMethod.GET, RequestMethod.POST}) //加载树
@ResponseBody
public AjaxJson getcfgTreeData(CfgTreeEntity depatr,HttpServletResponse response,HttpServletRequest request ){
AjaxJson j = new AjaxJson();
try{
List depatrList= new ArrayList();
StringBuffer hql = new StringBuffer(" from CfgTreeEntity t");
depatrList = this.systemService.findHql(hql.toString());
List
cfgztree.jsp
<%@ page language="java" import="java.util.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<html>
<head>
<title>ztreetitle>
<t:base type="jquery,easyui">t:base>
<link rel="stylesheet" href="plug-in/ztree/css/zTreeStyle.css"
type="text/css">
<script type="text/javascript"
src="plug-in/ztree/js/jquery.ztree.core-3.5.min.js">script>
<script type="text/javascript" src="plug-in/ztree/js/ztreeCreator.js">script>
head>
<body>
<div class="easyui-layout" fit="true" scroll="no">
<div data-options="region:'west',title:'配置项',split:true"
style="width: 200px; overflow: auto;">
<div id="cfgTree" class="ztree">div>
div>
<div data-options="region:'center',border:false"
style="text-align: center;">
<iframe id="listFrame" src="" frameborder="no" width="100%"
height="100%">iframe>
div>
<div class="hidden">
<div id="cfgMenu" class="easyui-menu"
data-options="onClick:menuHandler" style="width: 120px;">
<div data-options="name:'add'">添加子级配置项类型div>
<div data-options="name:'edit'">编辑当前配置项类型div>
<div data-options="name:'remove'">删除当前配置项类型div>
<div data-options="name:'fresh'">刷新div>
div>
div>
div>
body>
html>
<script>
//加载树
var cfgTree;
function loadTree() {
var zNodes;
jQuery.ajax({
async : false,
cache : false,
type : 'POST',
dataType : "json",
url : 'cfgTreeController.do?getcfgTreeData',//请求的action路径
error : function() {//请求失败处理函数
alert('请求失败');
},
success : function(data) { //请求成功后处理函数。
console.log(data.obj)
zNodes = data.obj; //把后台封装好的简单Json格式赋给zNodes
}
});
var ztreeCreator = new ZtreeCreator('cfgTree',
"cfgTreeController.do?getTreeData", zNodes).setCallback({
onClick : zTreeOnLeftClick,
onRightClick : zTreeOnRightClick
}).initZtree({}, function(treeObj) {
cfgTree = treeObj
});
};
//左击
function zTreeOnLeftClick(event, treeId, treeNode) {
curSelectNode = treeNode;
var parentId = treeNode.id;
var url = "cfgTreeController.do?update&id=" + curSelectNode.id;
if (curSelectNode.parentId == "0") {
$.topCall.warn('该节点为根节点,请点击具体的配置项类型');
return false;
}
$("#listFrame").attr("src", url);
};