4

使用 为表(在循环中)创建动态 ID 属性的最佳方法是什么<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

的 ID 属性<h:dataTable>不允许 EL 表达式(所以我不能直接访问我的地图键)。

创建我的 ID 属性的最佳方法是什么?

我想到了两种方法,但它们看起来都很老套:

  1. 使用 scriptlet 或 JSP 值表达式

  2. 使用 jQuery 为每个表分配唯一的 ID(在呈现之后和处理之前)

最终目标是使用 jqGrid 显示这些表(所以我们无论如何都在使用 jQuery)。

任何帮助都是极好的...


笔记:

我们使用辅助类来模拟对 Map 的迭代(因为这在 JSF 1.2 中无法完成)。

我们没有实际迭代 Map ,而是生成一个具有name和 a的对象列表List<Foo>

名称代表键,列表代表表的行。


编辑

我最终想到<h:dataTable>在这种情况下会生成自己的唯一 ID。

生成的名称足以解决我的问题......

即使我的页面正在运行,我仍然对将来如何处理这种情况感到好奇。

4

1 回答 1

1

我想这会帮助你...

使用 ${} 语法的所有表达式都会立即求值。这些表达式只能在模板文本中使用,或者作为可以接受运行时表达式的标记属性的值。

   id="${data.map}-table
于 2013-04-19T03:28:27.113 回答