<f: ajax> содержит неизвестный идентификатор: someid при использовании в <ui: repeat> - PullRequest
1 голос
/ 31 августа 2011

Фрагмент моего кода:

<ui:repeat var="o">
   <h:panelGroup id="someid">
      <ui:repeat>
         // HTML
      </ui:repeat>
   </h:panelGroup>

   <div>
      <h:form>
          <h:commandButton action="#{o.doSomething}">
              <f:ajax event="action" render=":someid" />
          </h:commandButton>
      <h:form>
   </div>
</ui:repeat>

Почему <f:ajax> не нашел someid?

1 Ответ

2 голосов
/ 31 августа 2011

Это невозможно.<ui:repeat> добавляет идентификатор клиента с его собственным идентификатором и индексом.Все эти группы получают идентификаторы, такие как j_id1:0:someid, j_id1:1:someid, j_id1:2:someid и т. Д. Предполагается, что в вашей конкретной конструкции должно работать следующее:

<f:ajax render=":#{component.parent.parent.clientId}:someid" />

Это будет предшествовать току <ui:repeat>.идентификатор клиента динамически.Однако он работает только при использовании MyFaces вместо Mojarra .<ui:repeat> во многих случаях нарушается в Мохарре.Они запланировали множество исправлений для 2.2.

Альтернативой является группировка их в общий компонент NamingContainer, такой как <h:form>, так что вы можете использовать относительный идентификатор.

<ui:repeat var="o">
    <h:form>
        <h:panelGroup id="someid">
            <ui:repeat>
                // HTML
            </ui:repeat>
        </h:panelGroup>

        <div>
            <h:commandButton action="#{o.doSomething}">
                <f:ajax event="action" render="someid" />
            </h:commandButton>
        </div>
    <h:form>
</ui:repeat>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...