<c:foreach>在更新后仍显示旧项目<a4j:commandbutton> </a4j:commandbutton> </c:foreach>

时间:2012-06-25 14:59:36

标签: jsf richfaces jstl seam

我正在使用JSF / Facelets / Seam / RichFaces / JSTL。在一个Facelets文件中,我使用<c:forEach>标记显示了一些基于bean属性的命令链接。

<c:forEach items="#{myBean.getSkds()}" var="skd">
    <a4j:commandLink value="#{skd.getLabel()}" ... />
</c:forEach>  

在页面的另一部分,我更改myBean的skds属性并重新渲染所有面板。

<a4j:commandButton action="#{myBean.changeSkds()}"
    image="/img/ico_change.gif"
    reRender="allPanels"
/>

第一个调用正确显示所有4个命令链接。第二个调用应显示10个命令链接,但它是4个原始命令和6个新命令链接而不是10个新命令。

E.g。第一次通话显示以下链接:

a b c d  

第二个电话会显示以下链接:

a b c d 5 6 7 8 9 10  

虽然我希望它们是

1 2 3 4 5 6 7 8 9 10  

这是如何引起的,我该如何解决?

我尝试了<ui:repeat>,但第二次通话结果为a b c d,与第一次通话完全相同。
最后一次尝试<a4j:repeat>,但结果与<ui:repeat>相同。

另一个尝试:
我用来显示每个Skd的<a4j:commandLink...而不使用forEach标记。我现在和以前一样。所以这不是forEach的原因,但似乎与rerender和<s:div>以及<a4j:commandLink>

之间存在关联

有趣的事:
我现在尝试以下列方式显示标签:

<c:forEach items="#{myBean.getSkds()}" var="skd">
    #{skd.getLabel()}
    <a4j:commandLink value="#{skd.getLabel()}" ... />
</c:forEach>  

我看到一个非常奇怪的事情!!! skd.getLabel()是正确的,但commandLink值不是!!! 什么附加??? !!! ???

0 个答案:

没有答案