我正在使用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值不是!!! 什么附加??? !!! ???