背景:
使用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>
因工作繁忙,略作记录,相对粗糙,方便自己查阅。
同时,欢迎大家指正。
分享到:
相关推荐
完整的jquery easyui tree 树形列表节点异步加载demo,比官方demo详细得多。是前后台交互的web应用。
JqueryEasyUI Tree 动态加载,稍作修改就可以用了,希望对有需要的人有帮助
easyui tree 改进版 ,支持复选框选择
easyui tree 三帧界面,右面动态显示图片和批注信息
easyui tree使用方式,詳細解釋其中使用方式。
jquery-easyui-tree学习 详情请看:http://blog.csdn.net/wild46cat/article/details/52763256
主要封装了easyui的表格删除添加修改查询以及tree和table和地图点的结合
主要介绍了EasyUI Tree树组件无限循环的解决方法,需要的朋友可以参考下
//设置一个标志位,在整棵树加载完成后就将标志位设置为false,不允许勾选checkbox了,在加载数据完成之前是可以勾选的,用来在数据中设置勾选了哪些节点 //这样就可以实现读取url数据时是可以设置勾选了哪些节点,在...
easyui 生成简单的树,是一个学习的例子。
对easyui tree扁平化扩展,不用再为children嵌套结构烦恼,使用版本1.4.2
easyui Tree系统管理 实现树状图
EasyUI Tree Combotree 的模糊所搜
本篇文章主要介绍解析jquery easyui tree异步加载子节点问题,easyui中的树可以从标记中建立,也可以通过指定一个URL属性读取数据建立,有兴趣的可以了解一下。
简单的easyui tree 例子 。。。
自己最近两天刚做的mvc项目linq to model first,包括分页,动态加载菜单栏,登录,记住密码,权限分配(差一步,等后续),非常适合刚入mvc的人借鉴,后续有更新,请下载者留下邮箱,后续会发到你的邮箱,或有什么...
使用easyUI的tree插件从服务器端获取树形菜单数据,并实现树形菜单
easyui tree 例子
内含数据库 及存储过程 主要以easyUI+JQuery+Ajax 实现后台数据交互的tree 及DataGrid 希望能帮到你的学习!