使用<h:dataTable>
为表(在循环中)创建动态ID属性的最佳方法是什么?
我们使用以下内容:
我们有一个包含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属性的最佳方法是什么?
我想到了两种方法,但它们看起来都很糟糕:
使用scriptlet或JSP值表达式
使用jQuery为每个表分配唯一ID(在呈现之后和处理之前)
最终目标是使用jqGrid显示这些表(所以我们仍然使用jQuery)。
任何帮助都会很棒......
注意: 的
我们正在使用辅助类来模拟迭代Map(因为这不能在JSF 1.2中完成)。
我们不是实际迭代Map,而是生成一个具有名称和List<Foo>
的对象列表。
名称代表键,List代表表格的行。
修改 :
最终我发现<h:dataTable>
在这种情况下会生成自己唯一的ID。
生成的名称足以解决我的问题......
即使我的网页正常运作,我仍然对将来如何处理这种情况感到好奇。
答案 0 :(得分:0)
我认为这会对你有帮助......
立即评估使用$ {}语法的所有表达式。这些表达式只能在模板文本中使用,或者作为可以接受运行时表达式的标记属性的值使用。
id="${data.map}-table