Java 转换ArrayList<;someObjects>;添加到HTML表

Java 转换ArrayList<;someObjects>;添加到HTML表,java,javascript,jsp,jstl,Java,Javascript,Jsp,Jstl,我有两个可变长度的ArrayList,有时为null。此ArrayList包含一组对象。 该表应具有基于对象(某些)属性的列。并且该表应该显示在jsp上 我有两个想法,一个是使用JSTL标记,另一个是使用JavaScript。欢迎提供库建议。JSTL是标准的首选方式(除非您需要通过ajax加载它) Foo headerBar收割台 ${obj.foo} ${obj.bar} JSTL更好 您应该尽可能避免使用Javascript 我不确定如何使用java脚本和集合呈现datatable 如何将

我有两个可变长度的ArrayList,有时为null。此ArrayList包含一组对象。 该表应具有基于对象(某些)属性的列。并且该表应该显示在jsp上


我有两个想法,一个是使用JSTL标记,另一个是使用JavaScript。欢迎提供库建议。

JSTL是标准的首选方式(除非您需要通过ajax加载它)


Foo headerBar收割台
${obj.foo}
${obj.bar}

JSTL更好

您应该尽可能避免使用Javascript

我不确定如何使用java脚本和集合呈现datatable


如何将jstl与Bozho在同一线程中演示的集合一起使用。

Javascript无法访问(我猜想)服务器上的Java对象。服务器代码可以使JSP可以使用ArrayList,然后JSP可以使用JSTL
forEach
标记对其进行循环

如何使ArrayList“可用”取决于所使用的框架,但简单的servlet方法只是从doPost方法设置一个属性

request.setAttribute("list1", arrayList1);
循环将类似于

<table>
<tr><th>Column 1</th> <th>Column 2</th> <th>Column 3</th></tr>
<c:forEach var="row" items="${list1}">
    <tr><td>${row.col1data}</td> <td>${row.col2data}</td> <td>${row.col3data}</td></tr>
</c:forEach>
</table>

第1栏第2栏第3栏
${row.col1data}${row.col2data}${row.col3data}

我认为应该是带有s的项。当我运行代码${obj.getItemID()}时,它告诉我“当未指定默认名称空间时,函数getItemID必须与前缀一起使用”。我能做什么?\
foo
bar
只是目标对象上的字段。我使用的标准名称不知道对象的外观。你把JavaScript与JSP Scriptlet混淆了。不,实际上我指的是JavaScript,但Stephen P(下面)已经澄清JavaScript不能访问Java对象。为什么要尽可能避免使用JS?如果已经存在对JS的依赖,JS可以为您提供比jstl(仅html)更多特性的数据网格。您只需将列表作为JSON传递。对于可排序、可筛选、可重新排序的隐藏列,可以使用ExtJSGrid之类的东西@Juan Mendes如果可能使用JSTL,请避免使用js,因为javascript加载浏览器的可靠性也不高。OP谈论的这个案例最适合使用JSTLlife.java。我觉得你的论点没有多大意义。如果你的站点必须禁用JS,这可能是真的,否则,你的评论听起来像是不太懂JS的人。一、 例如,需要JS,因为所有交互都是基于AJAX的。即使不需要JS,我建议的网格也支持渐进增强。如果客户端支持JS,您可以使用jstl输出该表,并将其增强为可排序、可过滤的。如果数据要在不同行(在1个循环中)中解析,而不是在正常的列流解析中解析,我们可以这样做吗?@testndt您能详细说明一下吗
<table>
<tr><th>Column 1</th> <th>Column 2</th> <th>Column 3</th></tr>
<c:forEach var="row" items="${list1}">
    <tr><td>${row.col1data}</td> <td>${row.col2data}</td> <td>${row.col3data}</td></tr>
</c:forEach>
</table>