单击commandButton后不再调用CommandLink



上面有100个"最爱"。当页面加载时,它只显示10。当我点击"Show More Favs"时,它又显示了10个Favs。

奇怪的是,在我点击Show More Favs,点击Remove from list之后,它没有调用backBean中的方法

My backBean is 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>

罪魁祸首是使用多种形式和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>

相关内容

  • 没有找到相关文章

最新更新