Ошибка в атрибуте render
рассматриваемой ссылки ajax:
<h:commandLink id="editlink" ...>
<f:ajax execute="@this" render="editlink" />
</h:commandLink>
Вы говорите, чтобы она отображала только ссылку редактирования.Вы в основном делаете то же самое, что и render="@this"
.Вы не говорите ему, чтобы сделать таблицу.Вы должны указать это для отображения таблицы.
Сначала дайте <h:form>
фиксированный id
, чтобы вы могли указать фиксированный идентификатор клиента позже в render
.
<h:form id="form">
Затем исправьте ссылку ajax следующим образом, чтобы она отображала таблицу:
<h:commandLink id="editlink" ...>
<f:ajax execute="@this" render=":form:ajaxtable" />
</h:commandLink>
Альтернативой является привязка таблицы к представлению, чтобы можно было динамически получить ее идентификатор клиента:
<h:dataTable binding="#{table}" ...>
с
<h:commandLink id="editlink" ...>
<f:ajax execute="@this" render=":#{table.clientId}" />
</h:commandLink>
(таким образом, вы также можете показать номер строки по #{table.rowIndex}
без необходимости DataModel
)
См.также: