2012-10-04 37 views
3

生成表的動態ID屬性使用<h:dataTable>爲表(在一個循環中)創建動態ID屬性的最佳方式是什麼?JSF 1.2 - 爲表使用<h:dataTable>

我們使用以下命令:

  • JSF 1.2
  • JSP
  • 的Sun應用服務器9.0_01
  • JSTL 1.1

我們有一個具有8代表的頁面。

每張表必須有一個唯一的ID屬性。

通過遍歷包含包含表數據的元素的Map來繪製表。

定義表格的ID屬性時應使用Map的鍵。

例子:

如果我的地圖中包含這些密鑰:Dog, Cat, Mouse, Bird

理想情況下,我想我的表的ID屬性是:dog-table, cat-table, mouse-table, bird-table

東西隨意將工作以及:t1-table, t2-table, t3-table

<h:dataTable>的ID屬性不允許EL表達式(所以我不能直接訪問我的地圖鍵)。

什麼是創建我的ID屬性的最佳方式?

兩種方法浮現在腦海中,但他們似乎都哈克:

  1. 使用小腳本或JSP值表達式

  2. 使用jQuery分配唯一的ID給每個表(它的渲染後,與前它的處理)

最終目標是顯示這些表使用jqGrid(所以我們使用jQuery反正)。

任何幫助將是真棒......


注:

我們使用一個輔助類來模擬迭代一個地圖(因爲這不可能是在JSF 1.2中完成)。

代替實際迭代地圖,我們生成一個名稱爲的對象列表List<Foo>

名稱代表關鍵字,List代表表格的行。


編輯

它最終發生,我認爲<h:dataTable>在這種情況下生成自己的唯一ID。

所產生的名字是不夠好,解決我的問題...

即使我的網頁是工作,我還是好奇如何在今後處理這個情況。

+0

是(Num of)datatable是否會動態生成?如果是,那麼您將如何創建它以提供詳細信息。 –

+0

也許有可能使用facelets''標籤而不是''?通過這種方式,您可以手動爲其中的HTML'

'標籤定義ID。 – Uooo

+0

@ w4rumy - 男孩我希望我們可以切換到facelets ...不幸的是我正在一個遺留系統上,有數百個JSP,不能真的像那樣改變。 – jahroy

回答

0

我認爲這將有助於你...

使用$ {}語法所有表達式都立即計算。這些表達式只能在模板文本中使用,或者可以用作可以接受運行時表達式的標記屬性的值。

id="${data.map}-table