У меня есть xhtml со следующей структурой:
<h:form id="frmMain2">
<f:subview id="sub1">
<ui:repeat var="vatId" value="#{someBean.suppliesKeys()}" id="rep1">
<fieldset>
<legend>vatId</legend>
<h:panelGroup id="panel">
<ui:repeat var="item" value="#{someBean.supplies[vatId]}" id="rep2">
<f:subview id="sub2">
<h:commandLink id="command">
${item}
<f:ajax
event="click"
render=":frmMain2:sub1:rep1:0:panel">
</f:ajax>
</h:commandLink>
</f:subview>
</ui:repeat>
</h:panelGroup>
</fieldset>
</ui:repeat>
</f:subview>
</h:form>
Это выполняется в портлете Websphere через портлет-мост, что означает, что я застрял с Myfaces 2.0.
Проблема, с которой я сталкиваюсь, заключается в том, что я получаю следующую ошибку:
javax.portlet.PortletException: Component with id::frmMain2:sub1:rep1:0:panel not found
Обратите внимание, что я пытаюсь сослаться на первую итерацию панели внутри f: ajax render (: frmMain2: sub1: rep1: 0 : панель).
Если я ссылаюсь на что-то еще (вне итерированной части), например : frmMain2: sub1: rep1, компонент найден и портлет работает.
Я не могу найти, как ссылаться на некоторый повторяющийся компонент в атрибуте рендеринга.
Нашел следующий пост, где эта проблема описана как решенная в более новой версии Mojarra, но Myfaces 2.2.7 не решает проблему: Как узнать идентификатор клиента компонента для обновления / рендеринга ajax? Не удается найти компонент с выражением "foo", на которое ссылается "bar"
Итак, есть ли способ ссылки на компонент, который я хочу отобразить в f: ajax?