Iceface: сбросить старые значения при обновлении - PullRequest
1 голос
/ 07 мая 2009

У меня есть информация о пользователе в бобе, и я хочу обновить этого пользователя. но моя проблема заключается в следующем: когда значение inputtext изменилось, я хочу добавить в него подтверждение. и если новое значение неверно, я хочу сбросить старое значение.

Пожалуйста, можете ли вы мне помочь?

1 Ответ

2 голосов
/ 07 мая 2009

У вас должно быть свойство ValueChangeListener в вашем теге "InputText". В вашем методе, объявленном как слушатель, у вас есть объект ValueChangeEvent, который содержит старое значение. Вы можете сделать что-то вроде этого:

public void myValChanged(ValueChangeEvent event) {
 try {
   validate(event.getNewValue());
   myValue = event.getNewValue();
 } catch (Exception ex) {
    /*
    Listeners are called before update model values in the request lifecycle so any changes you make in that phase are overwritten by the actual values in the page.
    By changing the event's phase to UPDATE_MODEL_VALUES or INVOKE_APPLICATION your changes will overwrite those currently set in the page, which is what you need.
     */
            myValue = event.getOldValue();
    if (!event.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) {
        event.setPhaseId(PhaseId.INVOKE_APPLICATION);
        event.queue();
        return;
    }       
 }

}

Идея операций PhaseId заключается в том, чтобы не допустить, чтобы ваш ValueChangeListener перекрывал ваш набор переменных "myValue = event.getOldValue();"

...