2

我在 glassfish 3.1.2 中使用 PrimeFaces 3.2 和 JSF 2。

我有一个<p:dataTable>显示包含不同问题信息的搜索结果(问题分配给用户)。如果有人单击指定用户的图标,<p:dialog>则会弹出一个。用户图标和相应的对话框是使用复合实现的。在复合材料中,我使用了一些 jQuery 函数,这些函数需要为每个对话框组件提供唯一的 ID - 我无法找到解决此问题的方法。

到目前为止我的调查:

我需要设置 widgetVar 属性,只要列表中只有一个用户,它就可以正常工作,但似乎在 dataTable 内部,widgetVar 对于许多复合材料来说并不是唯一的。由于用户可以在搜索结果中多次显示,因此我无法像这样设置 widgetVar:

<ui:param name="myWidgetVar" value="widget_#{user.id}" />

并以这种方式使用它

<p:dialog widgetVar="#{myWidgetVar}">

同样使用 #{cc.id} 也不能解决问题,因为它只返回小部件的 id,而没有始终相同的命名容器部分。

我需要 html 中显示的完整 ID(例如:form:jdt123:dialog:456) - 我怎样才能得到这个?

有谁知道该怎么做?

谢谢皮特

4

2 回答 2

2

我的解决方案是使用#{cc.clientId}我还不知道的。
这给了我完整的 html 元素 id,它由一系列与 UINamingContainer#getSeparatorChar 粘合的标识符组成(例如:form:jdt123:dialog:jdt456)

于 2012-08-24T14:09:47.620 回答
2

感谢你的回答。你解决了我不相关的问题,但我想我偶然发现了另一个解决你问题的方法。

来自 PrimeFaces 用户指南 ( http://primefaces.org/documentation.html ):

8.2 EL 函数

PrimeFaces 提供了内置的 EL 扩展,这些扩展是常见用例的助手。

常用功能

PrimeFaces UserGuide 8.2 EL 函数表

零件

<h:form id="form1">
     <h:inputText id="name" />
</h:form>
//#{p:component(‘name’)} returns ‘form1:name’

小部件变量

<p:dialog id="dlg">
     //contents
</p:dialog>
<p:commandButton type="button" value="Show" onclick="#{p:widgetVar(‘dlg’)}.show()" />

看起来您对 WidgetVar 实现最感兴趣。

于 2012-11-13T18:42:38.003 回答