dhtmlx框架在JSP中的刷新问题!

遇到一个非常烦人的页面刷新问题,非常苦恼,请各位大哥帮助!
用户通过login.jsp登陆成功后,来到一个main.jsp的页面,这个页面是一个系统主页面,包括导航目录!
main.jsp的页面效果如附加图,这是一个T型结构的页面!全屏式!

页面内容为:

。。。//T型A区域的代码,省略

<div class="bodyFrame">//这是T型B,C区域的一个根结构

 <div id="parentId" style="position: relative; top: 0px; left: 0px; width: 100%; height: 635px;">
 </div>
</div>

在这个parentId下面挂载一个dhtmlXLayoutObject对象,具体为:

<script>
 var dhxLayout = new dhtmlXLayoutObject("parentId", "2U");
 leftLayout=dhxLayout.cells("a");// leftLayout代码T型B区域,上面显示导航的树结构
 leftLayout.setText("<img src='<%=context%>/sysman/images/control.gif'>我的工作台");
 leftLayout.setWidth(160);
 leftLayout.setHeight(20);
 var dhxAccord = leftLayout.attachAccordion();

 rightLayout=dhxLayout.cells("b");//rightLayout代表的是T型C区域,在这个对象下面显示页面情况
 var text="<a href='www.google.com'><img src='<%=context%>/temp/pin2.gif' border='0'></a>&nbsp;&nbsp;&nbsp;&nbsp;"+
    "<a href='www.google.com'><img src='<%=context%>/temp/pin2.gif' border='0'></a>&nbsp;&nbsp;&nbsp;&nbsp;"+
    "<a href='www.google.com'><img src='<%=context%>/temp/pin2.gif' border='0'></a>&nbsp;&nbsp;&nbsp;&nbsp;"+
    "<a href='www.google.com'><img src='<%=context%>/temp/pin2.gif' border='0'></a>&nbsp;&nbsp;&nbsp;&nbsp;"+
    "<a href='www.google.com'><img src='<%=context%>/temp/pin2.gif' border='0'></a>&nbsp;&nbsp;&nbsp;&nbsp;"+
    "<a href='www.google.com'><img src='<%=context%>/temp/pin2.gif' border='0'></a>&nbsp;&nbsp;&nbsp;&nbsp;"+
    "<a href='www.google.com'><img src='<%=context%>/temp/pin2.gif' border='0'></a>&nbsp;&nbsp;&nbsp;&nbsp;";
 rightLayout.setText(text);
 rightLayout.setHeight(200);
 rightLayout.attachURL("<%=context%>/personset/deskSet/person/person.htm");
 
 
 var tree;
 function tonclick(id){
  var url=tree.getUserData(id,"url");
  rightLayout.attachURL(url);
 };
 var date=new Date();
 dhxAccord.addItem("a8", "&nbsp;人力资源");
 var tree8 = dhxAccord.cells("a8").attachTree();
 tree8.setImagePath("<%=context%>/sysman/images/tree/");
 tree8.loadXML("<%=context%>/xmls/navigator-humanResource.xml");
 tree8.setOnClickHandler(function(id){
      var url=tree8.getUserData(id,"url");
     rightLayout.attachURL(url);//从XML文件中得到一个URL,然后在C区域显示出来,下同。
 });

 dhxAccord.addItem("a10", "&nbsp;系统管理");
 var tree10 = dhxAccord.cells("a10").attachTree();
 tree10.setImagePath("<%=context%>/sysman/images/tree/");
 tree10.loadXML("<%=context%>/xmls/navigator-systemSetup.xml");
 tree10.setOnClickHandler(function(id){
       var url="<%=context%>"+tree10.getUserData(id,"url");
       url=url+"?time="+date.getTime();
       rightLayout.attachURL(url);
 });

 dhxAccord.addItem("a11", "&nbsp;个人设置");
 var tree11 = dhxAccord.cells("a11").attachTree();
 tree11.setImagePath("<%=context%>/sysman/images/tree/");
 tree11.loadXML("<%=context%>/xmls/navigator-personSetup.xml");
 tree11.setOnClickHandler(function(id){
  var url=tree11.getUserData(id,"url");
  rightLayout.attachURL(url);
 }); 
 dhxAccord.openItem("a10");
</script>

 

点击,导航树上(main.action)的某一个结点,可以得到URL的值,并且可以在C区域正确的显示出来,现假设这个URL是right.action,

路径查看:B区导航树的路径为main.action,C区路径为right.action 全都正确

现在的问题是:

右击C区域,刷新页面,right.action,程序并没有向后台去访问,这是因为缓存的原因,因为这个路径是左边传过来的,所以,即使加时间截也是不行的

更奇怪的是,整个页面一下子全部都坏掉,就是整个屏显示的是一个类型网络联系不上的页面,按理说,这么刷新应该只对right.action即,以区域有效才行。

但为什么会这样呢?另外,特别说明的是,我做过一个DEMO,全部是HTM页面,也是用这种方式来实现,但刷新没有任何问题!

 

希望各位用过这个东西的兄弟姐妹可以与我一起讨论这个问题。谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dhtmlXTree进行一个小的扩展 需求1: 动态生成树形菜单,每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的URL。(框架页说明:左边是树形菜单;右边是显示页面相应信息的页面) 分析: dhtmlXTree提供了很好的添加,删除节点的方法,故选择dhtmlXTree。 但是dhtmlXTree不能满足"每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的URL"这点需求,因次想到了对dhtmlXTree进行一个小的扩展,即在其节点对象原有属性的基础上,再添加两个扩展属性。具体操作如下: 1、找到定义节点对象的那个函数(或方法) function dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode) 修改为 function dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode,url,target) 并在方法体添加赋值语句:this.itemURL=url;this.itemTarget=target; 2、然后修改所有与dhtmlXTreeItemObject有关(直接或者间接相关)的方法: _attachChildNode,insertNewItem,insertNewChild,insertNewNext,_recreateBranch,_parseXMLTree 注:_parseXMLTree方法是与loadXML,loadXMLString相关的。 在这些方法生成节点的语句添加相应的参数和语句,以支持新添加的属性itemURL,itemTarget。 需求2: 为dhtmlXTree树上的每一个节点添加右键菜单。附:在树上的节点上点右键时才会生成菜单,空白区域单击时不会生成菜单。 分析: 1、用 dhtmlXTree + dhtmlxmenu 实现。 2、 用dhtmlxmenu生成菜单的部分代码: var menu = new dhtmlXMenuObject(); menu.setImagePath("imgs/"); menu.setIconsPath("images/"); menu.renderAsContextMenu(); menu.loadXML("dhtmlxmenu.xml?e="+new Date().getTime()); menu.addContextZone("treeboxbox_tree"); menu.addContextZone方法是为了把菜单添加到指定区域。 3、dhtmlXTreeObject.prototype._createItem方法是构造树形菜单上元素的具体实现方法。看这个方法的具体操作,可以发现它为每一个节点构建了一个table,节点的内容(即名字)放置在一个span。 4、考虑到dhtmlxmenu实在指定的区域构建菜单,所以可以为dhtmlXTree树上的每一个节点添加右键事件,在这个右键事件里获得该节点对象所对应的区域,然后在这个区域内构建Menu菜单。 难点和解决方案: 1、怎样获得dhtmlXTree树上的每一个节点对象所对应的区域?(dhtmlXTreeObject.prototype._createItem方法没有为这个节点的span设置id) 解决方法: 在dhtmlXTreeObject.prototype._createItem方法添加一个为span设置id的语句: 即: 在itemObject.span=document.createElement('span'); itemObject.span.className="standartTreeRow"; 后,新添加一句 itemObject.span.id="treeNode_"+itemObject.id;//为这个span新增一个Id属性 2、为dhtmlXTree树上的每一个节点添加右键事件,在这个右键事件里获得该节点对象所对应的区域,然后在这个区域内构建Menu菜单。 解决方法: a、为dhtmlXTree树上的每一个节点添加右键事件: tree.setOnRightClickHandler(treeOnRegihtClick);//右键事件 b、构建Menu菜单: var menu = new dhtmlXMenuObject(); function treeOnRegihtClick(id){ alert("右键 "+" span.id:"+tree.getItem(id).span.id); menu.setImagePath("imgs/"); menu.setIconsPath("images/"); menu.renderAsContextMenu(); menu.loadXML("dhtmlxmenu.xml?e="+new Date().getTime()); menu.addContextZone(tree.getItem(id).span.id);alert("width:"+tree.getItem(id).span.clientWidth); //var X=tree.getItem(id).span.getBoundingClientRect().left; //var Y=tree.getItem(id).span.getBoundingClientRect().top; var X=document.getElementById('mouseXPosition').value;//获得鼠标的横坐标位置 var Y=document.getElementById('mouseYPosition').value;//获得鼠标的纵坐标位置 menu.showContextMenu(X,Y);//调用showContextMenu方法显示菜单 说明:如果这儿不加上这条语句的话,第一次点击右键时只能生成菜单,但是显示不出菜单,下次点击右键Menu菜单才能弹出。 //menu._showContextMenu(X,Y,tree.getItem(id).span.id); } c、用 javascript 获取当页面上鼠标(光标)位置 <script type="text/javascript"> // 说明:获取鼠标位置 function mousePosition(ev){ if(ev.pageX || ev.pageY){ return {x:ev.pageX, y:ev.pageY}; } return { x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop - document.body.clientTop }; } document.onmousemove = mouseMove; function mouseMove(ev){ ev = ev || window.event; var mousePos = mousePosition(ev); document.getElementById('mouseXPosition').value = mousePos.x; document.getElementById('mouseYPosition').value = mousePos.y; } </script> 页面上放置两个隐藏域存放鼠标的位置:<input type="hidden" id=mouseXPosition><input type="hidden" id=mouseYPosition>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值