Não vou dizer muito bobagem, vou apenas postar código para você.
O código específico é o seguinte:
1. Front -end
<%@ Page Language = "Java" PageEncoding = "Utf-8" contentType = "Text/html; charset = utf-8"%> <script type = "text/javascript"> $ (function () {$ ('#bens_type_treegrid'). '${pageContext.request.contextPath}/admin/goodsTypeController/treegrid.do?id=NULL',idField: 'id',treeField: 'text',rownumbers: true,parentField: 'pid',fit : true,fitColumns : true,border : false,frozenColumns : [ [ {title : 'number',field : 'id',width : 150,hidden : true}, {field : 'text',title : 'category name',width : 200} ] ],columns : [ [ {field : 'pname',title : 'superior category name',width : 80},{field : 'seq',title : 'sorting',width : 50},{field : 'code',title : 'category encoding',width : 50}, {Field: 'pid', título: 'ID da categoria superior', largura: 150, oculta: true}, {field: 'ação', título: 'ação', largura: 50, formateira: function (value, linha, index) {return formatString ('<img onClick = "bens_type_edfun) {(/' ('). src = "{1}"/>> ', row.id,' $ {pageContext.request.ContextPath} /style/images/extjs_icons/pencil.png ', row.id,' $ {pageContext.Request.ContextPath} /style/images, '$ {pageContext.request.ContextPath} /style/images,' $ {PageContext.request.ContextPath} /style/images, ], barra de ferramentas: [{text: 'em lote importar', iconCls: 'icon-remowove', manipulador: function () {bens_type_importfun ();}}, {text: 'add', icoCls: 'icon-add', handler: function () {bens_type_appendfun (icon-add ', handler: funcl. 'Expanda', icoNCls: 'icon-Redo', manipulador: function () {var node = $ ('#bens_type_treeGrid'). TreeGrid ('getSelected'); if (node) {$ ('#bens_type_treegrid'). {$ ('#bens_type_treeGrid'). TreeGrid ('expandall');}}}, '-', {text: 'dobra', icoCls: 'icon-under', manipulador: function () {var node = $ ('#bens_type_treeGrid'). {$ ('#bens_type_treeGrid'). TreeGrid ('colapsAll', node.cid);} else {$ ('#bens_type_treegrid'). TreeGrid ('collapSeall');}}}, ', {' text: 'refrLe', ico ico '); {$ ('#bens_type_treeGrid'). TreeGrid ('Reload');}}], onBeforeExpand: function (linha) {// Configuração dinâmica de url var url para expandir consulta $ ("#bens_type_treegrid"). TreeGrid ("opções"). Url = url; row.id); $ ('#bens_type_menu'). $ ("#bens_type_treegrid"). TreeGrid ('getChildren', row.id); if (Children.Length <= 0) {row.leaf = true; $ ("#bens_type_treegrid"). Treegrid ('refresh', linha.id);}}}); id = "bens_type_treegrid"> </table>2. Controlador
@RequestMapping ("/TreeGrid")@ResponseBodyPublic List <OlodStypePage> TreeGrid (GoodSyPePage GoodStyPePage) {if (null == GoodStypePage || "" .equals (GoodstypePage.getId ()) || Null ==STIDEPAGEM () () {BOLSTYPEPAGEM.GETID (). GoodStyPeService.treegrid (GoodstypePage);}3. Serviço
@Substituir // cache dados public list <odstyPepage> TreeGrid (GoodSyPePage GoodSyPePage) {String hql = ""; if (null == GoodSyPePage || "" .equals (GoodstypePage.getId ()) || "null" .Equals (GoodstyPaGeT.TeP.TyId.getId ()) | Ordem nula por t.seq ";} else {hql =" de GoodStype t onde t.tgoodstype.id = '" +goodstypepage.getId () +"' Order by t.seq ";} list <odstype>> nl (GoodStypeda.find (hql); !] r); if (b.gettgoodtype ()! = null) {r.setpName (BR.GetTgoodType (). getText ()); r.setpid (Br.gettgoodtype ().