如何从其他 jsp 调用方法/函数以包含在另一个 jsp 的 jstree 中

How can I call a method/function from other jsp to include in jstree in another jsp

本文关键字:jsp 另一个 包含 jstree 其他 调用 方法 函数      更新时间:2023-09-26

我对jsTree,JavaScriptjQuery函数还是新手。我的问题是我需要刷新标题,因此当我单击 jstree 中的某些节点时,标题将被刷新。

jstree 位于 applet 中.jsp刷新标头的函数位于 header.jsp 中。

如何在 jstree 中调用刷新方法进行刷新?

这是我在小程序中的 jstree.jsp:

 var selected_folder = "folder_${user.defaultFolder}";
    $(document).ready(function() {
        jQuery("#folder_tree").jstree({
            "xml_data" : {
                 "ajax" : {
                     "url" : "<%=request.getContextPath()%>" + "/ListFolder.action" 
                 },
                "xsl" : "nest"
            },
            "ui" : {
                "initially_select" : [ "#folder_${user.defaultFolder}" ]
            },
            "types" : {
                "types" : {
                    "leaf" : {
                        "icon" : {
                            "image" : "<%=request.getContextPath()%>/images/icons/leaf.jpg" 
                        }
                    },
                    "share" : {
                        "icon" : {
                            "image" : "<%=request.getContextPath()%>/images/icons/share.jpg" 
                        }
                    }
                }
            },
            "themes" : {
                "theme" : "msam"
            },
            "plugins" : [ "themes", "xml_data", "ui", "types" ]
        });
        jQuery("#folder_tree").bind('loaded.jstree', function() {
            jQuery("#folder_tree").jstree('open_all');
          });
        jQuery("#folder_tree").bind("select_node.jstree", function(e, data) {
            var haveContent = data.rslt.obj.attr("haveContent");
            if (haveContent === 'false') {
                return;
            }
            var id = data.rslt.obj.attr("id"); 
            id = id.substring("folder_".length);
            parent.content.location.href = "<%=request.getContextPath()%>"
                                                        + "/home/Folder.action?folderID="
                                                    + id;
                                            //alert(data.inst.get_text(data.rslt.obj)); // NODE TEXT

            $.ajax({
                        url : "<%=request.getContextPath()%>" + "/WebContent/home/header.jsp",
                        data :{folderId,id},
                        cache:false,
                        success : function(data){
                        setupTree(data); //put your logic to set tree inside a method called setupTree or whatever you want to call it.
       }
 });
        });
        jQuery("#folder_tree").bind("refresh.jstree", function (event, data) {
            jQuery("#folder_tree").jstree("select_node", selected_folder);
        });

        });
            var tree_select_node = function(id) {
                selected_folder = "#folder_" + id;
                jQuery("#folder_tree").jstree("deselect_all");
                jQuery("#folder_tree").jstree("refresh");
            }

这是刷新标头中标头的方法/函数.jsp:

function selectHeaderLink(selectedLinkID) {
            var linkIDArray = new Array('homeLink', 'newFolderLink', 'settingsLink', 'reportsLink');
            resetHeaderLinks(linkIDArray, 'tab_link');
            if(linkIDArray.length > 0) {
                for(var i=0;i<linkIDArray.length;i++) {
                    if(linkIDArray[i] == selectedLinkID) {                  
                        var myLink = document.getElementById(linkIDArray[i]);
                        var row = myLink.parentNode;
                        row.style.height = "28";    
                        row.style.backgroundImage = 'url(../images/bg-topmenu.jpg)' ;                               
                        myLink.style.color = "white";
                        break;
                    } //--end: if-for-if
                } //--end: for-if
            } //--end: if
        }
        function windowOnload(){            
            selectHeaderLink('homeLink');

}
我已经尝试使用ajax请求,

但我仍然困惑于将此ajax请求放在哪里。

对不起,我的英语不好。我希望有人能帮助我解决这个问题。

我已经找到了答案

jQuery("#folder_tree").bind("select_node.jstree", function(e, data) {
            var haveContent = data.rslt.obj.attr("haveContent");
            if (haveContent === 'false') {
                return;
            }

selectHeaderLink('homeLink');

            var id = data.rslt.obj.attr("id"); 
            id = id.substring("folder_".length);
            parent.content.location.href = "<%=request.getContextPath()%>"
                                                        + "/home/Folder.action?folderID="
                                                    + id;
                                            //alert(data.inst.get_text(data.rslt.obj)); // NODE TEXT

});

我只是将函数放入 jquery n 然后删除函数以集中 js 文件。及其工作..