ztree+Struts2异步检索数据例子

今天分享一个ztree+Struts2异步检索数据demo。

首先效果图:

客户端html和js代码:

 代码如下 复制代码

<script type="text/javascript">
var quickMsg = "输入关键字按回车键检索";
$(function(){
            $("#quickQuery").focus(
                function(){
                    if($.trim($("#quickQuery").val()) == quickMsg)
                    {
                        $("#quickQuery").val("");
                    }
            });       
    });
function checkBack (e, treeId, treeNode) {
            var zTree = $.fn.zTree.getZTreeObj("treeForRole");
            nodes = zTree.getCheckedNodes(true);
            id = "";
            name = "";
            nodes.sort(function compare(a,b){return a.id-b.id;});
            for (var i=0, l=nodes.length; i&lt;l; i++)
{
                id += nodes[i].id + ",";
                name += nodes[i].name + ",";
            }
            if (name.length > 0 )
{
name = name.substring(0, name.length-1);
}
            if (id.length > 0 )
{
id = id.substring(0, id.length-1);
}
            var selObj = $("#userForRoleSel");
            selObj.attr("value", name);
            $("#selectRole").val(id);
            $("#userForRoleSel").focus();         
        }
//ajax回调 如果无记录则给予提示
    function asyncBack(event, treeId, treeNode, msg) {
var nodes = $.fn.zTree.getZTreeObj("treeForRole").getNodes();
            if(nodes.length==0)
            {
$("#treeForRole").html("<span style='color:#ff0000; margin-left:10px; margin-top:105px;'>未检索到匹配的记录</span>");
            }
        }
    function showMenu() {
                $(function(){
                    if($("#quickQuery").val() == "")
                    {
                        $("#quickQuery").val(quickMsg);
                    }
                    document.onkeydown=function(e)
                    {
                        //回车触发ajax查询   
                        if((e ? e.which :event.keyCode)==13)
                            {
                                 var setting = {
                                            check: {
                                                enable: true,
                                                chkStyle: "checkbox",
                                                chkboxType: { "Y":"s", "N":"s"  }
                                            },
                                            callback: {
                                                onCheck: checkBack,
                                                onAsyncSuccess :asyncBack
                                            },
                                            
                                            async: {
                                                enable: true,
                                                url:"User_ajaxRoles.action",
                                                otherParam:{ "nameKey" : $.trim($("#quickQuery").val())},
                                                dataType: "json",
                                                dataFilter: null
                                            },
                                            data: {
                                                simpleData: {
                                                    enable: true
                                                }
                                            }
                                            
                                        };
                                
                                $.fn.zTree.init($("#treeForRole"), setting);
                            }
                    };
                });
            var selObj = $("#userForRoleSel");
            var businessOffset = $("#userForRoleSel").offset();
            $("#menuContentForRole").css({left:businessOffset.left + "px", top:businessOffset.top + selObj.outerHeight() + "px"}).slideDown("fast");
            $("body").bind("mousedown", onBodyDown);
        }
function hideMenu() {
            $("#menuContentForRole").fadeOut("fast");         
        }
function onBodyDown(event) {
            if (!(event.target.id == "menuBtnForRole" || event.target.id == "menuContentForRole" || $(event.target).parents("#menuContentForRole").length>0)) {
                hideMenu();
            }
        }
</script>

<s:textfield id="userForRoleSel" name="userForRoleSel" readonly="true" size="18" />
<a id="menuBtnForRole" href=" javascript:showMenu();">选择</a>
<div id="menuContentForRole" class="menuContent"
            style=" border:1px solid #ccc;width:198px;height:160px;overflow:scroll;scroll-y;display:none;position: absolute; background-color:#fcfcfc;">
            <input class="quickText" id="quickQuery" type="text" />
            <ul id="treeForRole" class="ztree" style="margin-top: 0; width: 140px;">
</ul>
</div>
<s:hidden id="selectRole" name="role.roleId" />

后台使用Struts2,相关代码如下
Action代码:

 代码如下 复制代码

public String ajaxRoles()
        throws Exception
{
        try
        {
            result = roleService.getAjaxRoles(nameKey);
        }
        catch(Exception e)
        {
            log.error(e.getMessage());
            throw e;
        }
        return "ajaxRoles";
}

Struts2-User.xml 代码:

 代码如下 复制代码

<package name="rbac_user" namespace="/" extends="json">
    <action name="User_*" class="xx.UserAction" method="{1}">
        <result name="ajaxRoles" type="json">
            <param name="root">result</param>
        </result>
    </action>
</package>

Service代码:

 代码如下 复制代码

public String getAjaxRoles(String nameKey)
{
        //Dao层是一个简单的根据name查询 不再赘述
        List<Role> results = roleDao.getAjaxRoles(nameKey);
        JSONArray json = new JSONArray();
        for (Role ro : results)
        {
            JSONObject jo = new JSONObject();
            jo.put("id", ro.getRoleId());
            jo.put("name", ro.getName());
            json.add(jo);
        }
        return json.toJSONString();
}

时间: 2024-10-27 22:29:15

ztree+Struts2异步检索数据例子的相关文章

ECharts使用jQuery和PHP、MySQL异步读取数据例子

ECharts地图主要用于地理区域数据的可视化,展示不同区域的数据分布信息.ECharts官网提供了中国地图.世界地图等地图数据下载,通过js引入或异步加载json文件的形式调用地图. ECharts地图应用:使用jQuery和PHP.MySQL异步读取数据 本文将结合实例讲解如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据,我们以中国地图为例,展示去年(2015年)我国各省份GDP数据.通过异步请求php,读取mysql中的数据,然后展示在地图上,因此本文除了你掌握前

asp.net+jquery+ztree实现动态绑定数据例子

先看效果图: 1.用于获取JSON数据的代码:  代码如下 复制代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RegionData.aspx.cs" Inherits="AT.Web.Ajax.RegionData" %> 后台代码:  代码如下 复制代码 using AT.Business.DAL; using AT.Business.I

ztree+java异步加载树形菜单例子

本篇给大家分享一下 ztree+java异步加载demo.ztree支持加载数据量可以做大,预计一个页面5000+都是可以的. Ztree异步加载的意思就是: 当点击展开树节点时,才去请求后台action返回点击节点的子节点数据并加载. 本demo采用SpringMvc+Mybatis.参见代码结构图: 前台代码jsp:  代码如下 复制代码 <%@ page language="java" import="java.util.*" pageEncoding=

使用AJAX异步获取数据

ajax|数据|异步 [导读]本文给出一个例子(使用AJAX异步获取数据),介绍如何去使用AJAX. AJAX这个名字看起来很神奇,我第一次见到它也被它吸引了,它是Asynchronous JavaScript and XML的简写,异步的JAVASCRIPT和XML,关于AJAX的介绍在网上的介绍太多了,我就不多那么多了,我的口才不好,没他们说的那么精彩,可以去http://zh.wikipedia.org/wiki/AJAX 看看,在这里我只是给大家一个例子,了解如何去使用AJAX. AJA

在数据窗口中检索数据

数据 在数据窗口中检索数据 我们往往需要数据窗口仅显示我们需要的数据.在数据窗口中检索数据的方法很多,常用的是设置SetFilter和使用SQL语句来实现. 1.使用SetFilter进行数据过滤 首先需要构造条件语句.如数据窗口中有一列名为xyh,我们需要检索xyh等于"叶秋枫"的数据.那么可写语句如下: string bl;bl="xyh='叶秋枫'";dw_1.setfilter(bl)//数据窗口的名为dw_1dw_1.retrieve()//重新检索数据

大数据-ajax异步请求数据问题。。。看不出哪里错了。。。跪求大神指点。。。

问题描述 ajax异步请求数据问题...看不出哪里错了...跪求大神指点... 我做ajax读取Excel表格里的数据...这是JAVA代码 java: public static List<HashMap<Object,Object>> readExcel(String excelPath){ //声明一个集合用于存储解析出来的数据 List<HashMap<Object,Object>> maps = new ArrayList<HashMap&l

ibatis 数据库-ibatis如何快速的在千万级以上的数据里检索数据

问题描述 ibatis如何快速的在千万级以上的数据里检索数据 数据库中的数据是千万级以上的,就是一般的操作日志,一共有40种操作类型,其余的都是一些操作时间和操作的描述,用ibatis查询的时候基本不可用,页面检索需要很长很长的时间,请问有什么办法能做到快速的检索吗

在JSP页面中实现检索数据的分页显示

js|分页|数据|显示|页面     在页面中,当检索的数据很多时,通常需要分页显示数据,并要实现翻页. 下面将通过一些例程来说明实现JSP页面翻页技术的实现. 首先,在JSP中,通过JAVA servlet 来检索数据,而用JSP来调用结果来显示. 因而,此技术可分为两个部分(依赖关系): 1. 在服务器端的servlet 中的实现 要点: &将查询条件保存到session中,取session中的查询条件 &设置Statement对象的MaxRows(确定一页显示多少行数据) &

复杂检索数据并分页显示的处理方法

系统标题:复杂检索数据并分页显示的处理方法 系统功能:利用临时表检索数据库数据,然后分页显示的方法: 处理方法:采用临时表存放数据中间结果,根据中间结果显示数据           数据的显示采用隔行的方式处理 处理优点:对于复杂的查询,特别是涉及到多表的数据查询,如果直接使用查询条件,系统的           开销将很大,利用临时表把数据先保存,然后处理.这样对数据库的查询只要开销一次. 使用方法:只要把连接数据库的用户信息和数据表改变即可使用         <?   //连接数据库