2013-06-11 23 views
1

我有一個問題,我無法解決,我有一個值的常聽話人selectOneListbox並提交onclick。它完美的工作,但我注意到的問題是,我的表單中的其他元素的Set和Get方法在捕獲ValueChangeListener的方法之後運行。而且我無法使用表單中元素的正確數據,我該如何解決這個問題?火焰valueChangeListener提交但設置並獲得方法

,所以我就在我的selectOneListbox:

<h:selectOneListbox onclick="Submit();" 
valueChangeListener="#{normalbesoksgrenController.setActiveFromAllList}" 
size="20" value="#{normalbesoksgrenController.currentVardTillfalleID}"> 

<f:selectItems itemValue="#{item.vardTillfalle.id}" itemLabel="# 
{normalbesoksgrenController.getDateAndTime(item.getVardTillfalle().getStartTid())}" 
var="item" value="#{normalbesoksgrenController.besokList}" ></f:selectItems> 

      </h:selectOneListbox> 

,我得到了我的backbean:

public void setActiveFromAllList(ValueChangeEvent event) 
{ 

    int id = Integer.parseInt(event.getNewValue().toString()); 

    Doing some stuff.. 


} 

回答

1

我想你可能要這樣使用AJAX事件:

<h:selectOneListBox .....> 
     <f:ajax execute="@form" listener="#{normalbesoksgrenController.setActiveFromAllList}" event="change" reder=":whatEverYouWant" /> 
    </h:selectOneListBox> 

execute屬性定義了在處理ajax請求之前應該提交的內容。

+0

謝謝,它完美的作品。在這裏,其他具有相同問題的人閱讀了有關價值變化監聽器的信息: http://stackoverflow.com/questions/11879138/when-to-use-valuechangelistener-or-fajax-listener –