JSF/Facelets/Seam/RichFaces/JSTL を使用しています。<c:forEach>
1 つの Facelets ファイルで、タグを使用して Bean プロパティに基づいたいくつかのコマンド リンクを表示しています。
<c:forEach items="#{myBean.getSkds()}" var="skd">
<a4j:commandLink value="#{skd.getLabel()}" ... />
</c:forEach>
ページの別の部分で、skds
myBean のプロパティを変更し、すべてのパネルを再レンダリングします。
<a4j:commandButton action="#{myBean.changeSkds()}"
image="/img/ico_change.gif"
reRender="allPanels"
/>
最初の呼び出しでは、4 つのコマンド リンクがすべて正しく表示されます。2 回目の呼び出しでは 10 個のコマンド リンクが表示されるはずですが、10 個の新しい onws ではなく、元の 4 個と新しい 6 個のリンクが表示されます。
たとえば、最初の呼び出しには次のリンクが表示されます。
a b c d
2 番目の呼び出しでは、次のリンクが表示されます。
a b c d 5 6 7 8 9 10
私は彼らがそうであることを期待していますが
1 2 3 4 5 6 7 8 9 10
これはどのように発生し、どうすれば解決できますか?
を試しました<ui:repeat>
が、2 回目の呼び出しの結果a b c d
は最初の呼び出しとまったく同じです。
最後に で試してみまし<a4j:repeat>
たが、結果は と同じ<ui:repeat>
です。
別の試み:タグを使用せずに for each Skd
を表示するために使用します。以前と同じように見えるようになりました。したがって、これは forEach の理由ではありませんが、rerender とandの間の何かに関連しているようです。<a4j:commandLink...
forEach
<s:div>
<a4j:commandLink>
興味深いことに
、次の方法でラベルを表示してみます。
<c:forEach items="#{myBean.getSkds()}" var="skd">
#{skd.getLabel()}
<a4j:commandLink value="#{skd.getLabel()}" ... />
</c:forEach>
そして、私は本当に奇妙なものを見ます!!!
skd.getLabel() は正しいですが、commandLink の値は正しくありません!!!
何を追加しますか???!!!!???