如何动态地将id(s)添加到primefaces组件?

时间:2013-04-02 07:27:32

标签: jsf primefaces datatable facelets uirepeat

我有一个要求,我需要在表单上显示将从数据库中检索的组件。我可以在datatable和ui repeat的帮助下显示组件。我还需要为这些组件包含toolTip功能,每个组件都需要一个ID。有没有什么办法可以动态地向组件添加id。

<p:dataTable styleClass="borderless" id="rdResultTable" var="result"
    value="#{RequestBean.radioList}" rendered="#{not empty RequestBean.radioList}">

    <p:column style="width:150px;">
        <f:facet name="header">
            <h:outputText value=" " />
        </f:facet>
        <h:outputText value="#{msg[result.field_label]}"/>
    </p:column>
    <p:column>
        <f:facet name="header">
            <h:outputText value="" />
        </f:facet>
        <ui:repeat value="#{RequestBean.radioList}" var="itm">
            <p:inputText  value="#{itm.indFieldValue}"
            rendered="#{result.level_id==itm.level_id and  result.field_type=='textbox'}">
            </p:inputText>
        </ui:repeat>
    </p:column>
</p:dataTable>

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:8)

你不需要。 JSF将自动担心在同一循环中设置<p:tooltip>与目标组件之间的正确关系。

<ui:repeat ...>
    <p:inputText id="foo" ... />
    <p:tooltip for="foo" ... />
</ui:repeat>

在Web浏览器中拉出JSF页面,右键单击并执行查看源。您会注意到<ui:repeat>已经使用迭代索引自动为ID foo添加前缀。

答案 1 :(得分:-1)

据我所知,JSF不允许你设置动态id,而primefaces是基于JSF的。

也许这个问题的答案可以帮到你:Refer to JSF dynamically generated ids based on iteration index