【问题标题】:Does not work properly id generation on ui:repeat My faces 2.2.9 + prime faces 5.3在 ui:repeat Myfaces 2.2.9 + primefaces 5.3 上无法正常生成 id
【发布时间】:2016-06-17 12:08:06
【问题描述】:

实际上我正在使用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>
....

所以,当渲染上面的代码时,标识符很奇怪,还有如下图:

所以我不知道如何删除 id 中的这些奇怪的东西

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

如何在ui:repeat 中获得正确的标识符?

【问题讨论】:

    标签: jsf-2 primefaces myfaces


    【解决方案1】:

    至于具体问题,给所有NamingContainer组件一个固定ID即可。这包括&lt;ui:repeat&gt; 本身。

    <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>
    

    这样就可以了。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-22
      • 2012-06-06
      • 2013-03-08
      • 2012-05-29
      • 2014-05-08
      • 1970-01-01
      • 2011-11-11
      • 2020-08-09
      相关资源
      最近更新 更多