Seam オブジェクトのリスト プロパティにアタッチされている が取り込まれてい<h:selectOneListbox>
ます。<s:selectItems>
これが私の(簡略化された)JSFコードです:
<a4j:outputPanel ajaxRendered="true" id="valuesListPanel">
<table border="0" cellspacing="5">
<tr><td rowspan="5">
<h:selectOneListbox id="pickValue" value="#{seamObject.selectedValue}">
<s:selectItems value="#{seamObject.propertyValues}" var="properties" label="#{properties}" />
</h:selectOneListbox>
</td>
<td><a4j:commandButton value="Move Up"
action="#{seamObject.moveUp}"/></td></tr>
<tr><td><a4j:commandButton value="Move Down" action="#{seamObject.moveDown}"/></td></tr>
</table>
</a4j:outputPanel>
Seam オブジェクトの moveUp および moveDown メソッドは、バッキング リストで選択された項目を見つけ、それを上または下に移動します。
私が抱えている問題は次のとおりです。これらのボタンのいずれかをクリックすると、AJAX 要求が通過し、バッキング オブジェクトが変更されます。ただし、リストは更新されません。ただし、これらのボタンのいずれかを 2 回目にクリックすると、前の変更がリスト ボックスに反映されます。
したがって、1 つの項目を「下に移動」しても、変化は見られません。ただし、別のアイテムを「上に移動」すると、そのアイテムには何も起こりませんが、以前に下に移動したかったアイテムは下に移動します。
別の AJAX リクエストを強制することでこれをハッキングすると、「うまくいきます」。
どうすればこれを機能させることができますか? 問題にアプローチするより良い方法はありますか?