请问如何在js中遍历jsp页面里的java代码(如List<xxx>),程序代码如下

<%
List <Treebean> list2 = new ArrayList<Treebean>();
Treebean tb = new Treebean();
TreeInfo ti = new TreeInfo();
list2=ti.getTree();
//怎么把list在js中遍历并取值呢??

%>
<script type="text/javascript">
d = new dtree('d');

d.add()
d.add(0,-1,'审计系统');
d.add(1,0,'项目第一部分');
d.add(2,1,'信息添加','index.jsp');
d.add(3,1,'信息查询','index.jsp');

</script>

我想把LIST2这个集合在js中 for循环{d.add(list2.get(i).getId(), list2.get(i).getparentId()....)}这样
最后问一下 d = new dTree('d'); 这里面‘d’ 是定义什么东西啊 为啥我这说 ‘d’ 未定义 ,后来看他说是‘dtree’未定义????
代码如下
<div class="dtree">
<p><a href="javascript: d.openAll();">全部展开</a> | <a href="javascript: d.closeAll();">全部收缩</a></p>
<script type="text/javascript">

d = new dtree('d');
<%
int size = list2.size();

for(int i=0;i<size;i++){%>
tb=list2.get(i);
d.add(<%=tb.getId()%>,<%=tb.getPid()%>,'<%=tb.getName()%>','<%=tb.getUrl()%>');
<% }%>
document.write(d);
</script>
</div>

js肯定是不能直接操作java的list啊,你可以把list循环成一个json格式的字符串如:
String str="";
for(int i=0;i<list2.size();i++){
str+=("{id:'"+list2.get(i).getId()+"',pid:'"+list2.get(i).getparentId()+"'},");
}
if(str.length()>0){
str="["+str.substring(0,str.length()-1)+"]";
}
然后js里面这样var list='<%=str %>';
list=new Function("return "+ list)();
这样后list就是个和java中list差不多的对象数组了
list[i].id等价于java的list2.get(i).getId()追问

这个貌似可行 ,我先试试看,不过代码看不太懂。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-21
<script>
var d = new dtree('d');
<%
int size = list2.size();
for(int i=0;i<size;i++){%>
d.add(<%=list2.get(i).getId()%>,<%=list2.get(i).getparentId()%>,'<%=list2.get(i).getUrl()%>');
<% }%>
</script>追问

你确定???????????????????????

追答

你不试试?这个能用。

_______________________

我猜应该是一个标签的id,你在你的页面里加个id为"d"的标签,先试试div,不行再换个ul。

本回答被提问者和网友采纳
第2个回答  2012-05-17
用<%=变量 %>,看下面例子就可以用js得到java的值:

<script type="text/javascript">

function testJS()
{
var c='<%=path %>'; // var c='<%=list2.get(i).getId() %>';等等
alert(c);
}
</script>

<%=path %>中的path可以换成你要的值,自己尝试写下吧,这样才能记得牢

根据代码d = new dtree('d');这句需要改成var d = new dtree('d');
第3个回答  2012-05-17
按目前有 dwr js中直接可以使用后台定义的java类
直接可以传list去js里遍历
或者就是通过Ajax 通过数据封装获取
Ajax 有6种返回值 json text html script jsonp 还有一种 你的list 最好用 json返回类型
或者你就只有通过jsp的java代码 写到html元素上 然后用js取dom元素值追问

谢谢,不过首先我不懂ajax,而且dom也不懂,最好是有实例说明 (代码)

相似回答