我在 glassfish 3.1.2 中使用 PrimeFaces 3.2 和 JSF 2。
我有一个 <p:dataTable>
,它显示包含不同问题信息的搜索结果(问题已分配给用户)。
如果有人单击指定用户的图标,则会弹出 <p:dialog>
。
用户图标和相应的对话框是使用组合来实现的。
在复合 Material 中,我使用了一些 jQuery 函数,这些函数需要为每个对话框组件提供唯一的 ID - 我无法找到解决此问题的方法。
到目前为止我的调查:
我需要设置 widgetVar 属性,只要列表中只有一个用户,该属性就可以正常工作,但似乎在 dataTable 内,widgetVar 对于许多复合 Material 来说并不是唯一的。 由于用户可以在搜索结果中多次显示,因此我无法像这样设置 widgetVar:
<ui:param name="myWidgetVar" value="widget_#{user.id}" />
并以这种方式使用它
<p:dialog widgetVar="#{myWidgetVar}">
同样使用 #{cc.id} 并不能解决问题,因为它只返回小部件的 id,而没有始终相同的命名容器部分。
我需要 html 中显示的完整 ID(例如:form:jdt123:dialog:456) - 我怎样才能得到这个?
有人知道该怎么做吗?
谢谢皮特
最佳答案
我的解决方案是使用我还不知道的#{cc.clientId}
。
这给了我完整的 html 元素 id,由与 UINamingContainer#getSeparatorChar 粘合的一系列标识符组成(例如:form:jdt123:dialog:jdt456)
关于jsf-2 - dataTable 内 JSF 复合组件的唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076071/