2009-08-11 13 views
2

私のJSF/ICEFacesアプリケーションで複数のドロップダウンメニューがあり、他のものの内容の選択に応じて互いに更新します。ice:selectOneMenuが間違った値を送信しています

問題はメニューが間違った値を送信していることです。それは、現在の値の代わりに前に値を送るようです!理由はわからない!

アイデア?

おかげで、

タム

<td> 
    <ice:selectOneMenu id="selectCurApplNm" 
     value="#{statsDisplayAndFilter.applIDFilterPhrase}" 
     disabled="#{statsDisplayAndFilter.disableCurrentApplIdNamesMenu}" 
     valueChangeListener="#{statsDisplayAndFilter.fetchEventNames}" 
     partialSubmit="true" immediate="true"> 
     <f:selectItem itemValue="" itemLabel="" /> 
     <f:selectItem itemValue="all" itemLabel="all" /> 
     <f:selectItems id="selectCurApplNmItems" 
     value="#{statsDisplayAndFilter.currentApplIdItems}" /> 
    </ice:selectOneMenu> 
    </td> 
</tr> 
<tr> 
    <td> 
    <ice:outputLabel for="SlctCompTyp" value="Event Name: " /> 
    </td> 
    <td> 
    <ice:selectOneMenu id="SlctCompTyp" 
     value="#{statsDisplayAndFilter.eventNameFilterPhrase}" 
     disabled="#{statsDisplayAndFilter.disableEventNamesMenu}" 
     valueChangeListener="#{statsDisplayAndFilter.fetchMethodNames}" 
     partialSubmit="true" immediate="true"> 
     <f:selectItem itemValue="" itemLabel="" /> 
     <f:selectItem itemValue="all" itemLabel="all" /> 
     <f:selectItems id="SlctcompTypeItms" 
     value="#{statsDisplayAndFilter.eventNameItems}" /> 
    </ice:selectOneMenu> 
    </td> 
</tr> 

答えて

1

は、私は、イベント変数を使用していたので、それはvalueChangeListenerの中で定義されたメソッドを呼び出した時間によって値がまだ適切な変数にバインドされていないことが判明しました新しい値を取得します

public void fetchEventNames(ValueChangeEvent e) throws SQLException{ 
    String filteringOptions = ""; 
    String newSelectedValue = e.getNewValue().toString(); 
     ..... 

をそして、これは問題

+1

REASを解決それは "即時"のキーワードです。これにより、JSFライフサイクルのいくつかの段階がスキップされ、Before *値がUIからモデルに書き戻されるイベント*が発生します。 –

関連する問題