Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse DatabindingContext值更改侦听器=>;肮脏的_Java_Eclipse_Listener_Dirty Data - Fatal编程技术网

Java Eclipse DatabindingContext值更改侦听器=>;肮脏的

Java Eclipse DatabindingContext值更改侦听器=>;肮脏的,java,eclipse,listener,dirty-data,Java,Eclipse,Listener,Dirty Data,我有一个对话框来显示一些值。现在我需要知道用户是否更改了某些内容 所有字段都包装在eclipse DatabindingContext中 ... bindingContext.bindValue(process_observable_milage, process_bean_mileage, new UpdateValueStrategy(), null); ... 如果我更改一些字段,则会触发模型中的propertyChangeSupport侦听器。(调用属性的Setter) 现在我需要一个

我有一个对话框来显示一些值。现在我需要知道用户是否更改了某些内容

所有字段都包装在eclipse DatabindingContext中

...
bindingContext.bindValue(process_observable_milage, process_bean_mileage, new UpdateValueStrategy(), null);
...
如果我更改一些字段,则会触发模型中的propertyChangeSupport侦听器。(调用属性的Setter)

现在我需要一个全局侦听器来检测是否有任何值被更改

我尝试了以下方法,但没有成功:

    IObservableValue globalValidity = new WritableValue();
    globalValidity.addChangeListener(new IChangeListener() {
        @Override
        public void handleChange(ChangeEvent event) {
             dirty = true;
        }
    });
    bindingContext.bindValue(globalValidity, new AggregateValidationStatus(bindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY), null, null);
这是来自另一个添加了一些AfterConvertValidator的类。 所以我想我必须用“addValueChangeListener”来代替,但即使这样也不行

    IObservableValue globalValidity = new WritableValue();
    globalValidity.addValueChangeListener(new IValueChangeListener() {
        @Override
        public void handleValueChange(ValueChangeEvent event) {
            dirty = true;
        }
    });
    bindingContext.bindValue(globalValidity, new AggregateValidationStatus(bindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY), null, null);
有什么办法可以做到这一点吗

致以最诚挚的问候

我使用:

IObservableValue setError = PojoProperties.value("error").observe(new SetError());

bindingContext.bindValue(setError, new AggregateValidationStatus(bindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY));


private class SetError
{
  public IStatus getError()
  { 
    return ValidationStatus.ok();
  }

  public void setError(final IStatus status)
  {
    final String msg = status.isOK() ? null : status.getMessage();

    // TODO deal with message / status
  }
}
IObservableValue setError = PojoProperties.value("error").observe(new SetError());

bindingContext.bindValue(setError, new AggregateValidationStatus(bindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY));


private class SetError
{
  public IStatus getError()
  { 
    return ValidationStatus.ok();
  }

  public void setError(final IStatus status)
  {
    final String msg = status.isOK() ? null : status.getMessage();

    // TODO deal with message / status
  }
}