2010-12-14 18 views
0

我有幾個ArrayLists可變長度,有時爲空。這個ArrayList包含一堆對象。 該表應該具有基於對象的(某些)屬性的列。該表應該顯示在一個jsp上。轉換ArrayList <someObjects>到一個HTML表格

我有兩個想法,一個是使用JSTL標籤,另一個是使用JavaScript。並歡迎圖書館的建議。

+0

你混淆JavaScript和JSP腳本小程序。 – BalusC 2010-12-14 17:47:20

+0

實際上我並沒有提到JavaScript,但是Stephen P(下文)已經闡明瞭JavaScript不能訪問Java對象。 – 2010-12-14 21:21:01

回答

0

JSTL更好

的Javascript你應該避免儘可能多的,

我不知道你將如何使用Java腳本和收集

來呈現數據表如何使用jstl和Bozho在同一個線程中演示的集合。

+0

爲什麼要儘量避免JS?如果JS上已經存在依賴關係,那麼JS可以爲您提供比jstl更多功能的數據網格(僅html)。您只需要將List 作爲JSON傳遞。您可以使用像Ext-JS網格這樣的可排序,可過濾,可重複使用的可隱藏列... http://dev.sencha.com/deploy/dev/examples/grid/grid-plugins.html – 2010-12-14 17:57:07

+0

@Juan Mendes如果可能的話用JSTL來做避免js是因爲javascript會加載瀏覽器也不那麼可靠。而OP在談論的案例最適合使用JSTL – 2010-12-14 18:15:14

+0

life.java您的論點對我來說沒有多大意義。如果你的網站必須使用JS禁用,那可能是真的,否則,你的評論聽起來像一個不瞭解JS的人。例如,我需要JS,因爲所有的交互都是基於AJAX的。即使不需要JS,我建議的網格也支持漸進式增強。如果客戶端支持JS,則可以使用jstl輸出表並將其增強爲可排序的,可過濾的。 – 2010-12-14 19:06:19

1

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> 
+0

我認爲它應該是s的項目。 – Enrique 2010-12-14 17:34:01

+0

是的,錯字。謝謝。 – Bozho 2010-12-14 17:34:38

+0

當我運行代碼​​$ {obj.getItemID()}它告訴我「函數getItemID必須與一個前綴一起使用時,未指定默認名稱空間」。我能做什麼?\ – 2010-12-14 21:29:43

0

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> 
相關問題