Проблемы с производительностью в описываемой вами ситуации часто вызваны большим количеством выражений EL , которые обременяют сервер.
Один из подходов к решению этой проблемы - вычисление комментариев кна стороне клиента, и передать их все сразу на сервер.Таким образом сокращает количество комментариев EL в выражении до одного или ни одного, и использует только одну кнопку.
Поместите все элементы в одну форму.Поля комментариев не связаны.
<h:form>
// first element
<h:outputText value=#{first element}
// first comment
<h:inputTextarea id="comment1"/> <-- notice there is no EL expression
But we use a unique id for each comment
// second element
<h:outputText value=#{second element}
// second comment
<h:inputTextarea id="comment2"/>
.
.
.
</h:form>
Отсюда вы можете либо
1. после каждого события размытия в любом из полей комментариев, ajax сервер и передатьв качестве параметров комментарий и id комментария, из которого был сделан вызов ajax.на сервере обновите свою модель соответственно
Или Вы также можете собрать все комментарии на стороне клиента и отправить их на сервер одновременно.
2. Когдапользователь нажимает кнопку отправки, вызывая функцию js, чтобы объединить все комментарии в структуру, которую вы сможете легко проанализировать на стороне сервера (т. е. "{c1,comment a};{c2,comment b};{c5=,comment e}..."
).передайте эту строку на сервер, проанализируйте ее и обновите вашу модель соответствующим образом.
3. после каждого события размытия в любом из полей комментария вызовите функцию js, которая обновляет скрытое поле.
<h:inputHidden value="{myClass.allComments}" />
, когда пользователь отправляет форму, анализирует allComments и соответственно обновляет вашу модель.
РЕДАКТИРОВАТЬ:
Для решения общей проблемы производительности IДобавил рекомендации из статьи, которая мне показалась полезной ускорить часть 1 ускорить часть 2 .
Надеюсь, это поможет
кстати, ярекомендовал бы первый подход, а не последние два.