Del Pedro
Del Pedro

Reputation: 1213

Unique ID for JSF composite component inside dataTable

I am using PrimeFaces 3.2 with JSF 2 in a glassfish 3.1.2.

I have a <p:dataTable> which displays search results containing information on different issues (the issues are assigned to users). If somebody clicks on the icon of the assigned user a <p:dialog> pops up. The user icon and the according dialog are implemented using a composite. Inside the composite I am using some jQuery functions which need a unique ID for each dialog component - I am not able to find a way to solve this problem.

My investigations so far:

I need to set the widgetVar attribute, which works fine as long as I have only one user in the list but it seems that inside a dataTable the widgetVar is not unique for many composites. Since the user can be displayed more than one time inside the search result, I am not able to setup an widgetVar like this:

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

and use it this way

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

also using #{cc.id} does not resolve the problem 'cause it only returns the id of the widget without the naming-container part which is always the same.

I need the complete id as displayed in html (e.g.: form:jdt123:dialog:456) - how can I get this?

Does anyone know what to do?

Thanks Pete

Upvotes: 2

Views: 2287

Answers (2)

Cody
Cody

Reputation: 2491

Thanks for the answer. You solved my unrelated problem, but I think I stumbled on another solution for your problem.

From the PrimeFaces user guide (http://primefaces.org/documentation.html):

8.2 EL Functions

PrimeFaces provides built-in EL extensions that are helpers to common use cases.

Common Functions

PrimeFaces UserGuide 8.2 EL Functions Table

Component

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

WidgetVar

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

It looks like you would be most interested in the WidgetVar implementation.

Upvotes: 2

Del Pedro
Del Pedro

Reputation: 1213

My solution is using #{cc.clientId} which I did not know yet.
This gives me the complete html element id constisting of the series of identifiers glued with the UINamingContainer#getSeparatorChar (e.g.: form:jdt123:dialog:jdt456)

Upvotes: 2

Related Questions