我有一个<h:selectOneListbox>
填充<s:selectItems>
,它只是附加到我的Seam对象上的列表属性。这是我(简化)JSF代码:JSF - h:selectOneListbox - 如何上下移动项目
<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>
的为moveUp和下移方法在Seam对象发现在后台列表中选中的项目,将其向上或向下。
这里是我遇到的问题:当我点击这些按钮中的一个,AJAX请求获得通过,并支持对象确实发生了改变。但是,列表不会更新。第二次点击其中一个按钮,但是,以前的更改反映在列表框中。
因此,如果我“向下移动”一个项目,则不会显示任何更改。然而,如果我“移动”另一个物品,那个物品没有任何反应,但是我之前想要移动的物品向下移动。
迫使另一AJAX请求“作品”,与第二请求打掉,都应该要表现出任何FacesMessages异常黑客这一点。
我该如何得到这个工作?有没有更好的方法来解决这个问题?
富有:ordersList看起来很有希望。我会让你知道它是否有效。 +1 – iandisme 2011-03-09 15:20:11
我想我会去探索其他选项。富人:ordersList看起来像是一个很好的工具,但是为了把这个放在......好吧,这只是给了我意志,而将现有列表背后的意大利面解开。尽管如此,我一定会用它来解决未来的问题。谢谢! – iandisme 2011-03-09 16:00:31
a4j:日志表示列表框正在重新渲染。但是,这些项目在响应中顺序错误。 – iandisme 2011-03-09 16:38:18