在ui上无法正常生成id:重复我的面部2.2.9 +素面5.3

时间:2016-03-03 22:39:31

标签: jsf-2 primefaces myfaces

实际上我正在使用Myfaces版本2.2.9,我有以下结构来根据用户选择的特定号码生成任何面板。

...
<ui:repeat value="#{garajes}" var="garaje" varStatus="loop">
<p:panelGrid >
    <h:outputLabel value="Numero de garaje #{loop.index+1}: " />
    <h:outputLabel value="Matricula  #{loop.index+1}: " />

    <p:inputText   value="#{garaje.numeroGaraje}"   maxlength="5" >
    </p:inputText>

    <p:inputText id="matriculaInmobiliariaGaraje-#{loop.index+1}"   value="#{garaje.matriculaInmobiliaria}" 
        maxlength="20">
    </p:inputText>

    ...

</p:panelGrid>
</ui:repeat>
....

因此,当呈现上面的代码时,标识符很奇怪,还有另外一些东西,如下图:

enter image description here

所以我不知道如何在id

中删除这些奇怪的东西

注意:我需要一个特定的ID来更新循环中的另一个组件。

如何在ui:repeat内找到正确的标识符?

1 个答案:

答案 0 :(得分:1)

关于具体问题,只需为所有NamingContainer组件提供固定ID即可。这包括<ui:repeat>本身。

<ui:repeat id="garajes" ...>

至于具体要求,你的事情过于复杂。 NamingContainer本身就会担心孩子ID的唯一性。您在id="matriculaInmobiliariaGaraje-#{loop.index+1}"中的尝试将无法正常工作,因为在使用#{loop}实例化组件的视图构建时,id变量不可用。摆脱它。您可以在NamingContainer内使用相对ID来引用同一NamingContainer中的其他组件。

<ui:repeat ...>
    <p:inputText id="foo" />
    <p:inputText ...><p:ajax ... update="foo" /></p:inputText>
</ui:repeat>

这样可以正常使用。

另见: