Как перерисовать часть страницы с формой в JSF 2.0?

В настоящее время мы пытаемся перейти на JSF 2.0 с JSF 1.2, и одна из проблем, с которыми мы столкнулись, заключается в невозможности повторного рендеринга части страницы, содержащей форму. это (перерендерить externalDivили сами формы):

<h:panelGroup id="outerDiv">
    <h:form id="form1">...</h:form>
    <h:form id="form2">...</h:form>
</h:panelGroup>

Я имею в виду, что если я обновлю externalDivвсе обновится, но сама форма (или формы) будет сломана и будет вести себя как минимум странно ajax-вызовы либо не работают при первом запуске, либо вместо вызова какого-либо метода bean-компонента они создают новый экземпляр этого bean-компонента и ничего не делают (либо уничтожая предыдущий при каждом вызове, либо просто создавая новый при первом вызове, а затем ничего не делать).Проблема может быть решена путем повторного рендеринга только компонентов внутри формы, например так (обновление innerDiv1и innerDiv2):

<h:panelGroup id="outerDiv">
   <h:form id="form1">
       <h:panelGroup id="innerDiv1">...</h:panelGroup>
   </h:form>
   <h:form id="form2">
       <h:panelGroup id="innerDiv2">...</h:panelGroup>
   </h:form>
</h:panelGroup>

но у нас есть много мест, где мы включаем некоторые страницы с ui:includeи не очень удобно заглядывать внутрь этой страницы и обновлять там какие-то компоненты. Кроме того, нам придется изменить все эти страницы, так как многие из них не имеют общего div-оболочки внутри форм, а обновление каждого компонента по отдельности будет очень громоздким и подверженным ошибкам.
Итак, можно ли заставить JSF 2.0 правильно обновлять часть страницы с 1-м подходом, как это было в JSF 1.2?


РЕДАКТИРОВАТЬ: похоже, проблема с рендерингом формы связана с Richfaces 4.2, поскольку я использую a4j:ajax(преемник a4j:support, который использовался с Richfaces 3.3.3) и настраиваемые кнопки на основе rich:commandButton. Когда я заменил их собственными формами jsf f:ajax, кажется, что они обновлены правильно. Но проблема с внешним div все еще актуальна

6
задан mykola 5 April 2012 в 16:12
поделиться