由于JEECG 3.4.3 online模式不支持treegrid,只好使用代码生成方式:
1、通过online或sql语句建表
2、根据表明使用代码生成
3、修改生成的entity
1) extends IdEntity
2) 去掉生成的id属性
3)将level改成short类型
4)添加父对象
5)添加子对象
@Entity
@Table(name = "ncms_center", schema = "")
@DynamicUpdate(true)
@DynamicInsert(true)
@SuppressWarnings("serial")
public class NcmsCenterEntity extends IdEntity implements java.io.Serializable {
/**编号*/
private java.lang.String code;
/**名称*/
private java.lang.String name;
/**等级*/
private java.lang.Short level;
/**显示顺序*/
private java.lang.String sort;
/**父节点*/
private NcmsCenterEntity ncmsCenterEntity;
/**子节点*/
private List<NcmsCenterEntity> ncmsCenterEntitys = new ArrayList<NcmsCenterEntity>();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "pid")
@ForeignKey(name="null")//取消hibernate的外键生成
public NcmsCenterEntity getNcmsCenterEntity() {
return ncmsCenterEntity;
}
public void setNcmsCenterEntity(NcmsCenterEntity ncmsCenterEntity) {
this.ncmsCenterEntity = ncmsCenterEntity;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "ncmsCenterEntity")
public List<NcmsCenterEntity> getNcmsCenterEntitys() {
return ncmsCenterEntitys;
}
public void setNcmsCenterEntitys(List<NcmsCenterEntity> ncmsCenterEntitys) {
this.ncmsCenterEntitys = ncmsCenterEntitys;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String 编号
*/
@Column(name ="CODE",nullable=true,length=255)
public java.lang.String getCode(){
return this.code;
}
/**
*方法: 设置java.lang.String
*@param: java.lang.String 编号
*/
public void setCode(java.lang.String code){
this.code = code;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String 名称
*/
@Column(name ="NAME",nullable=true,length=255)
public java.lang.String getName(){
return this.name;
}
/**
*方法: 设置java.lang.String
*@param: java.lang.String 名称
*/
public void setName(java.lang.String name){
this.name = name;
}
/**
*方法: 取得java.lang.Integer
*@return: java.lang.Integer 等级
*/
@Column(name ="LEVEL",nullable=true,precision=5,scale=0)
public java.lang.Short getLevel(){
return this.level;
}
/**
*方法: 设置java.lang.Integer
*@param: java.lang.Integer 等级
*/
public void setLevel(java.lang.Short level){
this.level = level;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String 显示顺序
*/
@Column(name ="SORT",nullable=true,length=10)
public java.lang.String getSort(){
return this.sort;
}
/**
*方法: 设置java.lang.String
*@param: java.lang.String 显示顺序
*/
public void setSort(java.lang.String sort){
this.sort = sort;
}
}
4、暂时去掉service和controller的annotation
5、删掉数据库表,重新启动项目生成表
6、修改controller
1)修改datagrid或添加新的方法,使其返回treegrid
@RequestMapping(params = "datagrid")
@ResponseBody
public List<TreeGrid> datagrid(HttpServletRequest request, TreeGrid treegrid) {
CriteriaQuery cq = new CriteriaQuery(NcmsCenterEntity.class);
if (treegrid.getId() != null) {
cq.eq("ncmsCenterEntity.id", treegrid.getId());
}
if (treegrid.getId() == null) {
cq.eq("ncmsCenterEntity.id","0");//这个是最高级
}
cq.addOrder("sort", SortDirection.asc);
cq.add();
List<NcmsCenterEntity> ncmsCenterEntityList = systemService.getListByCriteriaQuery(cq, false);
List<TreeGrid> treeGrids = new ArrayList<TreeGrid>();
TreeGridModel treeGridModel = new TreeGridModel();
treeGridModel.setIcon("");
treeGridModel.setTextField("name");
treeGridModel.setParentText("NcmsCenterEntity_name");
treeGridModel.setParentId("NcmsCenterEntity_id");
treeGridModel.setSrc("code");
treeGridModel.setIdField("id");
treeGridModel.setChildList("ncmsCenterEntitys");
treeGridModel.setOrder("sort");
treeGrids = systemService.treegrid(ncmsCenterEntityList, treeGridModel);
return treeGrids;
}
2)增加下拉菜单方法
@RequestMapping(params = "setPNcmsCenter")
@ResponseBody
public List<ComboTree> setPNcmsCenter(HttpServletRequest request, ComboTree comboTree) {
CriteriaQuery cq = new CriteriaQuery(NcmsCenterEntity.class);
if (comboTree.getId() != null) {
cq.eq("ncmsCenterEntity.id", comboTree.getId());
}
if (comboTree.getId() == null) {
cq.isNull("ncmsCenterEntity");
}
cq.add();
List<NcmsCenterEntity> ncmsCenterEntityList = systemService.getListByCriteriaQuery(cq, false);
List<ComboTree> comboTrees = new ArrayList<ComboTree>();
ComboTreeModel comboTreeModel = new ComboTreeModel("id", "name", "ncmsCenterEntitys");
comboTrees = systemService.ComboTree(ncmsCenterEntityList, comboTreeModel, null);
return comboTrees;
}
3)修改添加方法
@RequestMapping(params = "save")
@ResponseBody
public AjaxJson save(NcmsCenterEntity ncmsCenter, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
String functionOrder = ncmsCenter.getSort();
if(StringUtils.isEmpty(functionOrder)){
ncmsCenter.setSort("0");
}
if (ncmsCenter.getNcmsCenterEntity().getId().equals("")) {
ncmsCenter.setNcmsCenterEntity(null);
}else{
NcmsCenterEntity parent = systemService.getEntity(NcmsCenterEntity.class, ncmsCenter.getNcmsCenterEntity().getId());
ncmsCenter.setLevel(Short.valueOf(parent.getLevel()+1+""));
}
if (StringUtil.isNotEmpty(ncmsCenter.getId())) {
message = "新农合经办机构: " + ncmsCenter.getName() + "被更新成功";
systemService.saveOrUpdate(ncmsCenter);
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
} else {
ncmsCenter.setSort(ncmsCenter.getSort());
message = "新农合经办机构: " + ncmsCenter.getName() + "被添加成功";
systemService.save(ncmsCenter);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
}
return j;
}
4)修改addOrUpdate方法
@RequestMapping(params = "addorupdate")
public ModelAndView addorupdate(NcmsCenterEntity ncmsCenter, HttpServletRequest req) {
String functionid = req.getParameter("id");
if (functionid != null) {
ncmsCenter = systemService.getEntity(NcmsCenterEntity.class, functionid);
req.setAttribute("ncmsCenter", ncmsCenter);
}
if(ncmsCenter.getNcmsCenterEntity()!=null && ncmsCenter.getNcmsCenterEntity().getId()!=null){
ncmsCenter.setNcmsCenterEntity((NcmsCenterEntity)systemService.getEntity(NcmsCenterEntity.class, ncmsCenter.getNcmsCenterEntity().getId()));
req.setAttribute("ncmsCenter", ncmsCenter);
}
return new ModelAndView("com/gxzx/ncms/ncmscenter/ncmsCenter");
}
7、修改生成的页面
1)list页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<div class="easyui-layout" fit="true">
<div region="center" style="padding:1px;">
<t:datagrid name="ncmsCenterList" title="新农合经办机构" actionUrl="ncmsCenterController.do?datagrid" idField="id" treegrid="true" pagination="false">
<t:dgCol title="编号" field="id" treefield="id" hidden="false"></t:dgCol>
<t:dgCol title="编码" field="code" treefield="src"></t:dgCol>
<t:dgCol title="名称" field="name" treefield="text"></t:dgCol>
<t:dgCol title="显示顺序" field="sort" treefield="order"></t:dgCol>
<t:dgCol title="操作" field="opt" ></t:dgCol>
<t:dgDelOpt title="删除" url="ncmsCenterController.do?del&id={id}" />
<t:dgToolBar title="录入" icon="icon-add" url="ncmsCenterController.do?addorupdate" funname="addFun"></t:dgToolBar>
<t:dgToolBar title="编辑" icon="icon-edit" url="ncmsCenterController.do?addorupdate" funname="update"></t:dgToolBar>
</t:datagrid>
</div>
</div>
<script type="text/javascript">
$(function() {
var li_east = 0;
});
function addFun(title,url, id) {
var rowData = $('#'+id).datagrid('getSelected');
alert(rowData.id);
if (rowData) {
url += '&ncmsCenterEntity.id='+rowData.id;
}
add(title,url,'ncmsCenterList');
}
</script>
2)form页面
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<!DOCTYPE html>
<html>
<head>
<title>新农合经办机构</title>
<t:base type="jquery,easyui,tools,DatePicker"></t:base>
<script type="text/javascript">
$(function() {
$('#cc').combotree({
url : 'ncmsCenterController.do?setPNcmsCenter',
panelHeight:'auto',
onClick: function(node){
$("#ncmsCenterEntityId").val(node.id);
}
});
if($('#level').val()=='1'){
$('#pfun').show();
}else{
$('#pfun').hide();
}
$('#level').change(function(){
if($(this).val()=='1'){
$('#pfun').show();
var t = $('#cc').combotree('tree');
var nodes = t.tree('getRoots');
if(nodes.length>0){
$('#cc').combotree('setValue', nodes[0].id);
$("#ncmsCenterEntityId").val(nodes[0].id);
}
}else{
var t = $('#cc').combotree('tree');
var node = t.tree('getSelected');
if(node){
$('#cc').combotree('setValue', null);
}
$('#pfun').hide();
}
});
});
</script>
</head>
<body style="overflow-y: hidden" scroll="no">
<t:formvalid formid="formobj" layout="div" dialog="true" refresh="true" action="ncmsCenterController.do?save">
<input name="id" type="hidden" value="${ncmsCenter.id}">
<fieldset class="step">
<div class="form"><label class="Validform_label"> 名称: </label> <input name="name" class="inputxt" value="${ncmsCenter.name}" datatype="s2-15"> <span
class="Validform_checktip">名称范围2~15位字符,且不为空</span></div>
<div class="form"><label class="Validform_label"> 等级: </label> <select name="level" id="level" datatype="*">
<option value="0" <c:if test="${ncmsCenter.level eq 0}">selected="selected"</c:if>>一级</option>
<option value="1" <c:if test="${ncmsCenter.level>0}"> selected="selected"</c:if>>下级</option>
</select> <span class="Validform_checktip"></span></div>
<div class="form" id="pfun"><label class="Validform_label"> 父节点: </label> <input id="cc"
<c:if test="${ncmsCenter.ncmsCenterEntity.level eq 0}">
value="${ncmsCenter.ncmsCenterEntity.id}"</c:if>
<c:if test="${ncmsCenter.ncmsCenterEntity.level > 0}">
value="${ncmsCenter.ncmsCenterEntity.name}"</c:if>> <input id="ncmsCenterEntityId" name="ncmsCenterEntity.id" style="display: none;"
value="${ncmsCenter.ncmsCenterEntity.id}"></div>
<div class="form" id="funorder"><label class="Validform_label"> 编号: </label> <input name="code" class="inputxt" value="${ncmsCenter.code}" datatype="*1-2"></div>
<div class="form" id="funorder"><label class="Validform_label"> 显示顺序: </label> <input name="sort" class="inputxt" value="${ncmsCenter.sort}" datatype="n1-3"></div>
</fieldset>
</t:formvalid>
</body>