1

我有 bean 中的用户信息,我想更新这个用户。但我的问题是:当 inputtext 的值发生变化时,我想对其进行验证。如果新值错误,我想重置旧值。

请任何人都可以帮助我

4

1 回答 1

2

您的“InputText”标签中必须有 ValueChangeListener 属性。在您的方法中,声明为侦听器,您有 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();

于 2009-05-07T10:48:44.700 回答