Как перерисовать часть страницы с формой в JSF 2.0?
В настоящее время мы пытаемся перейти на JSF 2.0 с JSF 1.2, и одна из проблем, с которой мы столкнулись, состоит в том, что невозможно перерисовать часть страницы, которая содержит форму. Как этоouterDiv
или формирует себя)
<code><h:panelGroup id="outerDiv"> <h:form id="form1">...</h:form> <h:form id="form2">...</h:form> </h:panelGroup> </code>
Я имею в виду, что если я обновлюouterDiv
все обновляется, но сама форма (или формы) становится неработоспособной и ведет себя странно, по крайней мере, вызовы ajax либо не работают при первом запуске, либо вместо вызова метода какого-либо компонента, они создают новый экземпляр этого компонента и ничего не делают ( либо уничтожением предыдущего при каждом вызове, либо просто созданием нового при первом вызове, а затем ничего не делать). Проблема может быть решена путем перерисовки только компонентов внутри формы, как это (обновлениеinnerDiv1
а такжеinnerDiv2
):
<code><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> </code>
но у нас есть много мест, где мы включаем некоторые страницы сui:include
и не очень удобно заглядывать внутрь этой страницы и обновлять там определенные компоненты. Кроме того, нам придется изменить все эти страницы, так как многие из них не имеют общих оболочек div внутри форм, и обновление каждого компонента в отдельности будет очень громоздким и подверженным ошибкам.
Итак, возможно ли заставить JSF 2.0 корректно обновлять часть страницы с помощью 1-го подхода, как это было в JSF 1.2?
РЕДАКТИРОВАТЬ: похоже, проблема с рендерингом формы является проблема richfaces 4.2, как я используюa4j:ajax
(преемникa4j:support
который был использован с richfaces 3.3.3) и пользовательских кнопок на основеrich:commandButton
, Когда я заменил их на нативные jsff:ajax
формы, кажется, обновлены правильно. Но проблема с внешним div все еще актуальна