2009-05-07 6 views
1

Ich habe Informationen des Benutzers in Bean, und ich möchte diesen Benutzer aktualisieren. aber mein Problem ist: Wenn der Wert von Eingabetext geändert wurde, möchte ich die Validierung auf ihn setzen. und wenn der neue Wert falsch ist, möchte ich den alten Wert zurücksetzen.Iceface: Zurücksetzen alter Werte während der Aktualisierung

kann bitte jemand mir

Antwort

2

helfen Sie ValueChangeListener Eigenschaft in Ihrem „Input“ Tag haben muss. In Ihrer Methode, die als Listener deklariert wurde, haben Sie ein ValueChangeEvent-Objekt, das einen alten Wert enthält. Sie können etwas tun:

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

} 

Die Idee mit PhaseId Operationen - nicht Ihre ValueChangeListener außer Kraft setzen Ihre variablen Satz „myValue = event.getOldValue();

zu ermöglichen