`

EasyUI Tree 树同步加载 存入application

    博客分类:
  • JSP
 
阅读更多

背景:

使用EasyUI 树控件,加载单位树,需求需要同步加载,开始采用ajax请求数据,这样每次都需要请求一次数据,严重影响性能。现改为 web 启动时获取数据,存入application中,前台页面获取数据加载单位树。

 

 

之前代码:

 

$('#orgTree').tree({
		        url:'orginfo/searchOrgTree?searchKey='+encodeURIComponent(searchKey),
			onClick : zTreeOnClick,
			onDblClick : closeOrgWin,
			onLoadSuccess:function(){
				//找到顶层节点并展开
				var rootNode=$('#orgTree').tree('getRoot');
				$('#orgTree').tree('expand', rootNode.target);
			}
		});

 

现在代码:

 

web.xml 中添加:

  <servlet>  
        <servlet-name>InitOrgTreeData</servlet-name>  
        <servlet-class>ustcsoft.common.st.InitOrgTreeData</servlet-class>  
        <load-on-startup>1</load-on-startup>  
  </servlet>
 

对应的Servlet:

package ustcsoft.common.st;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.json.JSONException;
import org.apache.struts2.json.JSONUtil;

import ejb.common.st.Ejb3Factory;
import ejb.orginfo.st.QtyCOrganizationFacadeLocal;
import ejb.util.st.ComBoxTreeNode;

public class InitOrgTreeData extends HttpServlet {

	//EJB的静态工厂类变量
	public static Ejb3Factory factory;
	
	protected static Log logger = LogFactory.getLog(HttpServlet.class); 
	
	static {
		factory = Ejb3Factory.getInstance();
	}
	
	/**
	 * Constructor of the object.
	 */
	public InitOrgTreeData() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the POST method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		
		logger.info("Get ORG TREE DATA HERE!");
		
		String searchKey="";
		List<ComBoxTreeNode> list = new ArrayList<ComBoxTreeNode>();
		QtyCOrganizationFacadeLocal OrgLocal = (QtyCOrganizationFacadeLocal) factory
				.getEJB("QtyCOrganizationFacade");
		List orgList = OrgLocal.findSearchOrgTree(searchKey);
		list=CommDataUtil.buildNodeTree(orgList);

		try {
			String result = JSONUtil.serialize(list);
			//存入application
			this.getServletContext().setAttribute("OrgData",result);
		} catch (JSONException e) {
		    logger.error("InitOrgTreeData 数据转换错误");
		}
		
	}

}

 

前台页面的处理:

 

<%			
    String orgData=(String)application.getAttribute("OrgData");			
			
%>

<script language="javascript">

//注意下面的写法,不能为:var orgData='<%=orgData%>'
             var orgData=<%=orgData%>;
			$('#orgTree').tree({
 //注释原来的获取数据方式,url--->data
		//	url:'orginfo/searchOrgTree
                      ?searchKey='+encodeURIComponent(searchKey),
			data:orgData,
			onClick : zTreeOnClick,
			onDblClick : closeOrgWin,
			onLoadSuccess:function(){
				//找到顶层节点并展开
				var rootNode=$('#orgTree').tree('getRoot');
				$('#orgTree').tree('expand', rootNode.target);
			}
		});
</script>

 

因工作繁忙,略作记录,相对粗糙,方便自己查阅。

同时,欢迎大家指正。

分享到:
评论

相关推荐

    EasyUI Tree树组件无限循环的解决方法

    在上面的示例代码中,我们使用EasyUI Tree树组件来加载树形结构数据,formatter函数被用于格式化节点的文本信息。 EasyUI Tree树组件的无限循环问题可以通过将末节点State状态设为open来解决。同时,需要注意正确的...

    jquery easyui tree 树形列表节点异步加载

    在本文中,我们将深入探讨jQuery EasyUI中的Tree组件以及如何实现树形列表节点的异步加载。EasyUI是一个基于jQuery的轻量级前端框架,它提供了丰富的UI组件,包括我们这里关注的Tree组件。异步加载是提升用户体验的...

    JqueryEasyUI Tree 动态加载,稍作修改就可以用了

    本篇文章将深入探讨如何实现jQuery EasyUI Tree的动态加载,并根据提供的标题和描述,分享一些可能的实现方法。 动态加载是一种优化技术,可以提高用户体验,避免一次性加载大量数据导致页面响应变慢。对于Tree组件...

    easyui tree扁平化扩展,不用再为children嵌套结构烦恼

    EasyUI Tree插件是基于jQuery的一个轻量级插件,它提供了一种简单的方式创建树形控件。然而,在实际应用中,我们常常遇到数据结构的问题——即如何处理带有`children`属性的嵌套数据结构。这篇文章将详细介绍如何对...

    easyui tree使用方式

    EasyUI Tree 使用方式详解 EasyUI Tree 是一款功能強大且灵活的树状选择控件,它可以实现多种选择方式,例如多选、checkbox 勾选、新增或删除节点、拖曳移动节点等。以下是 EasyUI Tree 的使用方式详解。 一、套件...

    jquery-easyui-tree学习

    jQuery EasyUI Tree允许开发者轻松创建可扩展、可操作的树形结构,广泛应用于菜单导航、数据分类展示等场景。 jQuery EasyUI Tree的基础使用主要涉及以下几个方面: 1. **引入依赖**: 在HTML页面中,我们需要...

    easyui tree

    通过理解和实践这个“easyui tree”例子,你可以掌握 Tree 基本用法,进一步拓展到更复杂的树形数据处理和交互功能。在实际项目中,结合服务器端数据,你可以创建出功能丰富的组织结构图、文件目录树等应用。

    easyui tree 改进版

    EasyUI Tree是一款基于jQuery的轻量级用户界面库,它为开发者提供了丰富的树形结构组件。在标准的EasyUI Tree基础上,“easyui tree 改进版”进行了优化和增强,特别是加入了复选框选择功能,这使得用户在操作树形...

    EasyUI Tree Combotree 模糊搜索

    EasyUI Tree Combotree 的模糊所搜

    Easyui tree 测试demo

    描述中提到的 "简单的 easyui tree 例子" 暗示我们将会看到一个基础的 Tree 实现,可能包括加载数据、节点操作、节点展开与折叠等功能。 标签 "easyui tr" 可能是为了简化关键词,代表 EasyUI 和 Tree 相关内容。 ...

    easyui tree 三帧界面

    首先,EasyUI的Tree组件是一个强大的树形结构控件,它可以用来展示层级关系的数据。创建Tree的基本步骤包括引入EasyUI的CSS和JS文件,定义HTML结构,然后用JavaScript进行初始化和数据绑定。例如: ```html ...

    EasyUI tree 及 DataGrid

    EasyUI 是一个基于 jQuery 的前端框架,主要用于构建用户界面,特别是对于企业级应用而言,它提供了丰富的组件,如对话框、表单、菜单、树形控件(Tree)和数据网格(DataGrid)等。在本项目中,"EasyUI tree 及 ...

    easyui Tree系统管理

    在"easyui Tree系统管理"中,"Tree"指的是EasyUI中的树形控件,用于展示层级关系的数据,常用于构建如组织结构、目录导航等系统管理功能。 树形控件在EasyUI中的实现主要依赖于`&lt;div&gt;`元素和特定的CSS样式以及...

    easyui tree 例子

    可以利用Ajax与后台进行交互,比如使用`$.ajax`或`$.post`方法请求数据,然后用`tree.loadData`加载到树中。需要注意,后台返回的数据格式需符合EasyUI Tree的要求。 6. **项目结构分析** 根据提供的文件名列表,...

    解决EasyUI中Tree的CheckBox不能设置为禁用的问题

    //设置一个标志位,在整棵树加载完成后就将标志位设置为false,不允许勾选checkbox了,在加载数据完成之前是可以勾选的,用来在数据中设置勾选了哪些节点 //这样就可以实现读取url数据时是可以设置勾选了哪些节点,在...

    easyui tree和table和地图点的结合

    主要封装了easyui的表格删除添加修改查询以及tree和table和地图点的结合

    tree easyui java 树递归

    "tree easyui java 树递归"这个主题涉及到的就是如何在Java环境下利用EasyUI库创建一个树形结构,并通过SpringMVC框架与数据库进行交互。下面将详细阐述相关知识点。 首先,EasyUI是一个基于jQuery的UI组件库,提供...

    jQuery EasyUI tree增加搜索功能的实现方法

    扩展jQuery EasyUI tree搜索树节点的方法,使其支持节点名称的模糊匹配,将不匹配的节点隐藏。 /** * 1)扩展jquery easyui tree的节点检索方法。使用方法如下: * $("#treeId").tree("search", searchText); * ...

    jquery使用EasyUI Tree异步加载JSON数据(生成树)

    本文将详细介绍如何使用jQuery结合EasyUI库中的Tree组件实现对JSON数据的异步加载以生成树状结构,并对实现细节进行深入讲解。这个技术点在现代Web开发中非常常见,特别是在需要处理具有层级关系的数据时,如菜单、...

    使用easyUI实现树菜单

    EasyUI的树菜单是通过`&lt;div&gt;`元素和`class="easyui-tree"`来定义的。它可以从服务器获取数据,并根据数据动态生成节点。树菜单支持单击、双击事件,还可以展开/折叠节点,非常适合用来构建导航菜单或组织结构图。 #...

Global site tag (gtag.js) - Google Analytics