CommandLink больше не вызывается после нажатия кнопки CommandButton - PullRequest
0 голосов
/ 20 июля 2011

Есть список с 100 "Избранными" на нем.Показывает только 10, когда страница загружается.Когда я нажимаю «Показать больше избранных», отображается еще 10 избранных.

Что странно в этом, это то, что после того, как я нажимаю Показать больше избранных, нажимая Удалить из списка, он не вызывает метод в backBean.

Мой backBean - ViewScoped.

<ui:repeat value="#{bean.list}" var="fav">
 <h:form>
  <h:commandLink styleClass="someStyle" title="Remove from list" action="#{bean.remove(fav.id)}"/>
 </h:form>
</ui:repeat>
<h:form>
 <h:commandButton value="Show More Favs" action="#{bean.showMore}" >
  <f:param name="moreFav" value="10" />
  <f:ajax event="action" render="@all" />
 </h:commandButton>
</h:form>

1 Ответ

1 голос
/ 21 июля 2011

Виновником является использование нескольких форм и render="@all". Если вы повторно визуализируете другую форму из формы ajax, состояние другой формы будет потеряно.

Вам необходимо изменить код так, чтобы перерисовывался только контент другой формы:

<h:form id="otherform">
 <h:panelGroup id="list">
  <ui:repeat value="#{bean.list}" var="fav">
   <h:commandLink styleClass="someStyle" title="Remove from list" action="#{bean.remove(fav.id)}"/>
  </ui:repeat>
 </h:panelGroup>
</h:form>
<h:form>
 <h:commandButton value="Show More Favs" action="#{bean.showMore}" >
  <f:param name="moreFav" value="10" />
  <f:ajax event="action" render=":otherform:list" />
 </h:commandButton>
</h:form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...