Java Eclipse DatabindingContext值更改侦听器=>;肮脏的
我有一个对话框来显示一些值。现在我需要知道用户是否更改了某些内容 所有字段都包装在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) 现在我需要一个
...
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
}
}