ICEfaces SelectOneMenu ValueChangeListener не работает - PullRequest
3 голосов
/ 31 августа 2011

У меня есть простые ice:SelectOneMenu и ice:outputLabel, и все, что я хочу сделать, - это когда я изменяю значение в моем раскрывающемся меню, чтобы установить текст в моей метке, чтобы сказать мне, что я изменил значение и какое новое значениеесть (простой тест, как только это сработает, я на самом деле обновлю ice:dataTable с этим)

Я работаю над этим уже пару дней. Эта ссылка дала мне хорошую информацию о фазах и событиях, и я попробовал все решения, но ни одно из них не работает для меня.Это очень нетривиальная задача в asp.net, и я не понимаю, почему она так сложна в jsf.Наверное, я должен упомянуть, что у меня также есть ice:selectInputDate на странице, и когда я щелкаю по значку, чтобы открыть календарь для выбора даты, мой SOM valuechangelistener либо окончательно вызывается, либо он, наконец, отображает новый текст метки (полагаю,последний).Может кто-нибудь помочь мне заставить это работать?Я действительно ценю помощь, спасибо.

<ice:selectOneMenu valueChangeListener="#{easp$PartsInv.changeRC}"  binding="#{easp$PartsInv.SOM_RC}" id="SOM_RC">
    <f:selectItems binding="#{easp$PartsInv.SOM_RC_Items}" id="SOM_RC_Items" />
</ice:selectOneMenu>

<ice:outputLabel binding="#{easp$PartsInv.lblStatus}" id="lblStatus" style="color:red;" value=""></ice:outputLabel>

Текущий код Java (несколько раз менялся при попытке разных вещей):

//event raised when user chooses a new RC (Repair Center) value.
public void changeRC(ValueChangeEvent vce)
{
    String oldVal = vce.getOldValue().toString();

    if(oldVal != null){
        String newVal = vce.getNewValue().toString();
        this.lblStatus.setValue("RC changed to " + newVal);
        if(!newVal.equals(oldVal)){
            FacesContext.getCurrentInstance().renderResponse();
        }
    }
}

1 Ответ

4 голосов
/ 01 сентября 2011

Добавьте partialSubmit="true" к компоненту, точно так, как показано где-то в нижней части их ссылки на компонент .

...