触发valueChangeListener时,在dataTable中重置jsf​​ inputText值

时间:2016-02-16 16:49:00

标签: jsf datatable icefaces

我使用的是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调用的重置方法,它可以正常工作。

1 个答案:

答案 0 :(得分:1)

commandButton执行提交并重定向到您配置的页面/视图。

据我所知,valueChangeListener默认情况下不会。因此,您需要在bean中执行重定向,例如:

FacesContext.getCurrentInstance().getExternalContext().redirect(..)

也许items=getNewItems()清空您的输入,但使用监听器时视图不会再次渲染?