JSF 1.2 - 使用<h:datatable> </h:datatable>为表生成动态ID属性

时间:2012-10-04 00:08:42

标签: java jsp java-ee datatable jsf-1.2

使用<h:dataTable>为表(在循环中)创建动态ID属性的最佳方法是什么?

我们使用以下内容:

  • JSF 1.2
  • JS​​P
  • Sun Application Server 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. 使用scriptlet或JSP值表达式

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

  3. 最终目标是使用jqGrid显示这些表(所以我们仍然使用jQuery)。

    任何帮助都会很棒......


    注意:

    我们正在使用辅助类来模拟迭代Map(因为这不能在JSF 1.2中完成)。

    我们不是实际迭代Map,而是生成一个具有名称List<Foo>的对象列表。

    名称代表键,List代表表格的行。


    修改

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

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

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

1 个答案:

答案 0 :(得分:0)

我认为这会对你有帮助......

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

   id="${data.map}-table