我有一个 bean,它有很多属性,其中一半是 n 对 n 关系。我还添加了额外的瞬态“ isEdited ”布尔值,以确保用户已经完成了一些更改,这样我就可以减少所有实体的 db 获取。我当前的问题有时我需要序列化我的 bean 并希望将属性与真实实例进行比较。我尝试的第一个解决方案来自apache commons-lang =>EqualsBuilder.reflectEqual();
方法,它对我来说效果不佳,因为一些继承的项目没有以正确的方式实现 equals 方法,我无法编辑它们。我知道我可以添加 ajax 侦听器来更新已编辑的属性,或者我可以更新每个 setter 方法或新的 equals 实现。但我正在寻找更实用和通用的方式,这样我将来也可以使用这个实现。
所以我想要什么:(假设我有一个简单的 bean):
public class Foo {
private String prop1;
private String prop2;
/**
* @return the prop1
*/
public String getProp1() {
return prop1;
}
/**
* @param prop1 the prop1 to set
*/
public void setProp1(String prop1) {
this.prop1 = prop1;
}
/**
* @return the prop2
*/
public String getProp2() {
return prop2;
}
/**
* @param prop2 the prop2 to set
*/
public void setProp2(String prop2) {
this.prop2 = prop2;
}
}
比我的 bean 将实现一个EventListener
接口,这个侦听器将处理所有设置器。如果调用任何 setter 方法(在初始化之后),则编辑的属性将设置为 true。
所以我的问题是添加动作/事件监听器来处理设置器的正确方法是什么?
编辑**我试过PropertyChangeListener但没有得到任何事件输出。如果我添加每个 setterspcs.firePropertyChange();
方法,那么我可以通过这些方法直接设置isEdited是没有意义的。