【发布时间】:2012-09-28 16:54:42
【问题描述】:
我有一个 bean,它有很多属性,其中一半是 n 对 n 关系。我还添加了额外的瞬态 'isEdited' 布尔值,以确保用户进行了一些更改,这样我就可以减少所有实体的数据库获取。我当前的问题有时我需要序列化我的 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。如果调用任何 setter 方法(在初始化之后),则编辑的属性将设置为 true。
所以我的问题是添加动作/事件侦听器来处理设置器的正确方法是什么?
EDIT** 我试过PropertyChangeListener,但没有得到任何事件输出。如果我添加每个设置器 pcs.firePropertyChange(); 方法,那么我可以通过这些方法直接设置 isEdited 是没有意义的。
【问题讨论】:
标签: java jsf-2 javabeans addeventlistener