我使用的是Icefaces 1.8.2,不幸的是,我无法改变它。我有一个:
<ice:selectOneMenu value="#{myBean.selectedValue}" partialSubmit="true"
valueChangeListener="#{myBean.reloadTable}">
...
然后我有一个dataTable:
<ice:dataTable value="#{myBean.items}" var="item">
<ice:column>
<ice:outputText value="#{item.key}" />
</ice:column>
<ice:column>
<h:inputText value="#{item.value}" />
</ice:column>
</ice:dataTable>
在豆子里:
private List<KeyValueEntry> items;
public String reloadTable(ValueChangeEvent event) {
items=getNewItems(); //returns a list with all values set to null
UIViewRoot view = FacesContext.getCurrentInstance().getViewRoot();
return view.getViewId() + "?faces-redirect=true";
}
现在问题如下:items=getNewItems()
如果从reloadTable(ValueChangeEvent event)
调用,则不会清空输入框。如果我写一个由commandButton
调用的重置方法,它可以正常工作。
答案 0 :(得分:1)
commandButton执行提交并重定向到您配置的页面/视图。
据我所知,valueChangeListener默认情况下不会。因此,您需要在bean中执行重定向,例如:
FacesContext.getCurrentInstance().getExternalContext().redirect(..)
也许items=getNewItems()
清空您的输入,但使用监听器时视图不会再次渲染?