簡體   English   中英

當valueChangeListener觸發時,重置dataTable中的jsf inputText值

[英]Resetting jsf inputText value inside a dataTable when valueChangeListener fires

我使用的是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>

在bean中:

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";
 }

現在問題如下:如果從reloadTable(ValueChangeEvent event)調用, items=getNewItems()不會清空輸入框。 如果我編寫了一個由commandButton調用的重置方法,它將很好地工作。

commandButton執行“提交”並重定向到您配置的頁面/視圖。

據我所知,valueChangeListener默認情況下不是。 因此,您需要在bean中執行重定向,例如:

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

也許items=getNewItems()清空您的輸入,但是使用監聽器時視圖不會再次呈現?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM