我有幾個ArrayLists可變長度,有時爲空。這個ArrayList包含一堆對象。 該表應該具有基於對象的(某些)屬性的列。該表應該顯示在一個jsp上。轉換ArrayList <someObjects>到一個HTML表格
我有兩個想法,一個是使用JSTL標籤,另一個是使用JavaScript。並歡迎圖書館的建議。
我有幾個ArrayLists可變長度,有時爲空。這個ArrayList包含一堆對象。 該表應該具有基於對象的(某些)屬性的列。該表應該顯示在一個jsp上。轉換ArrayList <someObjects>到一個HTML表格
我有兩個想法,一個是使用JSTL標籤,另一個是使用JavaScript。並歡迎圖書館的建議。
JSTL更好,
的Javascript你應該避免儘可能多的,
我不知道你將如何使用Java腳本和收集
來呈現數據表如何使用jstl和Bozho在同一個線程中演示的集合。
爲什麼要儘量避免JS?如果JS上已經存在依賴關係,那麼JS可以爲您提供比jstl更多功能的數據網格(僅html)。您只需要將List
@Juan Mendes如果可能的話用JSTL來做避免js是因爲javascript會加載瀏覽器也不那麼可靠。而OP在談論的案例最適合使用JSTL – 2010-12-14 18:15:14
life.java您的論點對我來說沒有多大意義。如果你的網站必須使用JS禁用,那可能是真的,否則,你的評論聽起來像一個不瞭解JS的人。例如,我需要JS,因爲所有的交互都是基於AJAX的。即使不需要JS,我建議的網格也支持漸進式增強。如果客戶端支持JS,則可以使用jstl輸出表並將其增強爲可排序的,可過濾的。 – 2010-12-14 19:06:19
JSTL是標準的,首選的方式(除非你需要通過Ajax加載它,例如)
<table>
<tr><td>Foo header</td><td>Bar header</td></tr>
<c:forEach items="${yourRequestScopedArrayList}" var="obj">
<tr>
<td>${obj.foo}</td>
<td>${obj.bar}</td>
</tr>
</c:forEach>
</table>
Javascript無法訪問服務器上的活(我推測)的Java對象。服務器代碼可以使JSP能夠使用ArrayLists,然後使用JSTL forEach
標籤對它們進行循環。
如何讓ArrayLists「可用」取決於您正在使用的框架,但普通的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>
你混淆JavaScript和JSP腳本小程序。 – BalusC 2010-12-14 17:47:20
實際上我並沒有提到JavaScript,但是Stephen P(下文)已經闡明瞭JavaScript不能訪問Java對象。 – 2010-12-14 21:21:01