现在有一个产品类别树,在页面上我想显示出类别树底下的具体产品,具体做法是先将类别树显示出来,然后再类别树下添加具体产品,可是电脑报内存溢出。请问如何解决这个问题,高手指导~
解决方案 »
- nested exception is java.sql.SQLException: 无法从套接字读取更多的数据
- struts2+ajax+oracle实现目录树
- 单线程问题
- 新手 myeclipse 做 的 小 系 统,查 询 sql2000 里 的 信 息,查 询 结 果 全 是 空 白。
- 怎样用JFreeChart的setToolTipGenerator()方法
- 关一个关于html:errors的问题,老是显示不了错误信息
- tomcat连接MYSQL Attempted reconnect 3 times. Giving up
- 关于javabean读取sqlserver存储过程的返回值的问题。
- apache中文显示问题!紧急求助!!
- extjs+servlet+jdbc的项目 各位大神,帮我看看,给点思路
- hibernate的session.load(String ,int)不能用
- 405 错误?百思不得其解,请赐教
d.config.folderLinks=true;
//id, pid, name, url, title, target, icon, iconOpen, open
d.add(0,-1,'产品类别','','产品类别','_parent');
<logic:notEmpty name="wmsProType">
<logic:iterate id="pt" name="wmsProType" scope="request">
<script type="text/javascript">
d.add('${pt.wptId}','${pt.wmsProType.wptId}','(${pt.wptName})','','${pt.wptName}','_parent');
t = new dTree('t');
t.config.folderLinks=true;
</script>
<logic:iterate id="wp" name="pt" property="wmsProducts">
<logic:equal value="1" name="wp" property="wprStates">
<script type="text/javascript">
alert('${wp.wprName}')
var id='${pt.wptId}';
var id1='${wp.wprId}';
var name1='${wp.wprName}';
if(id1!=null&&id1!=""){
t.add(id1,id,name1,"",name1,'_parent');
}
</script>
</logic:equal>
</logic:iterate>
<script type="text/javascript">
document.write(t);
t.openAll();
</script>
<%count++;%>
</logic:iterate>
<script type="text/javascript">
document.write(d);
d.openAll();
</script>
</logic:notEmpty>
t = new dTree('t');
t.config.folderLinks=true;
如果放原来的树里就出现内存溢出~
弹出来的
只要用t添加就行了,不用每次都new。
貌似 <script type="text/javascript"> 也应该放在循环外面。
你是在做动态的添加么?不知道dtree是否支持这样的操作,栈溢出让我很怀疑。现在又很多支持异步的树可以选择的,是在不行可以考虑换换,比如 jsTree;
dtree帮不了你太多,等高手吧。
d.config.folderLinks=true;
//id, pid, name, url, title, target, icon, iconOpen, open
d.add(0,-1,'产品类别','','产品类别','_parent');
<logic:notEmpty name="wmsProType">
<logic:iterate id="pt" name="wmsProType" scope="request">
<script type="text/javascript">
d.add('${pt.wptId}','${pt.wmsProType.wptId}','(${pt.wptName})','','${pt.wptName}','_parent');
t = new dTree('t');//这里为什么要new 一个树呢?? t.config.folderLinks=true;
</script>
<logic:iterate id="wp" name="pt" property="wmsProducts">
<logic:equal value="1" name="wp" property="wprStates">
<script type="text/javascript">
alert('${wp.wprName}')
var id='${pt.wptId}';
var id1='${wp.wprId}';
var name1='${wp.wprName}';
if(id1!=null&&id1!=""){
t.add(id1,id,name1,"",name1,'_parent');
}
</script>
</logic:equal>
</logic:iterate>
<script type="text/javascript">
document.write(t);
t.openAll();
</script>
<%count++;%>
</logic:iterate>
<script type="text/javascript">
document.write(d);
d.openAll();
</script>
</logic:notEmpty>
我记得dtree是通过一个参数来指定父子节点关系的.如果我没记错应该是第二个.你要做的首先是添加一个根节点,
d.add(0,-1,'产品类别','','产品类别','_parent');//你已经做了,这个根节点ID为0 父节点id为-1然后把所有的类别遍历添加到 0这个节点下,所以
d.add('${pt.wptId}','${pt.wmsProType.wptId}','(${pt.wptName})','','${pt.wptName}','_parent'); 可能有点问题,应该把表示父节点的那个参数设置为0.然后在每个类别下遍历出产品.所以不用new一个树,继续在d上添加就可以了.把父节点参数设置为当前产品的类别的id就可以了.
d.add('${pt.wptId}','${pt.wmsProType.wptId}','(${pt.wptName})','','${pt.wptName}','_parent');
t = new dTree('t');
t.config.folderLinks=true;
</script>
这里的问题,new太多了,似乎直接d.add(***,t,*****,**那样就可以。我加过1000个没溢出。
这样的问题,你只能信心点,自己调调,找到问题所在,别人很难帮你。估计是你的逻辑写的有问题。
感觉你应该把t = new dTree('t');放在循环外面。
只要用t添加就行了,不用每次都new。
貌似 <script type="text/javascript"> 也应该放在循环外面。
你引用几张表也不能这么做,dTree接受的是数据,它不管是几张表的数据,只要你的数据本身是树形,到时它会自动添加,逻辑它本身已经控制好了。不用你自己控制。
你现在的问题是你根本就不会用dTree,建议你写点静态数据,自己测一下你就明白了。
你怎么听不懂我的话啊,你的思路有问题
new dTree('t');肯定是要new一次,他只管数据和你有几张表没关系,你这孩子怎么听不懂中国话啊。
换句话说只要你这两张的数据没有问题(要有父子关系)就能显示。
如果你这两张表的数据有问题,你就是用100个dTree你同样显示不了。
明白没?
两个循环~大哥~