2011-07-20 5 views
0

リストには10​​0個の「Favs」があります。ページが読み込まれると10だけ表示されます。 "Show More Favs"をクリックすると、さらに10のFavが表示されます。commandButtonをクリックした後でCommandLinkが呼び出されなくなった

私はそれについて変わっています、それは私がShow More Favsをクリックした後、リストから削除をクリックすると、それは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

犯人は複数のフォームと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> 
関連する問題