我想使用一个支持组件作为一个层来访问我的复合组件的属性(在其接口中定义)。我想要实现的是通过我的支持组件类读取我的组件的属性,我在其中返回所提供属性的属性值。
public String getName() {
if (this.name == null) {
this.name = getAttributes().get("name");
}
return this.name;
}
但是,例如通过输入字段设置新值时,我只想将值存储在我的支持 bean 属性中,而不是更新作为属性参数传递给我的复合组件的原始属性的值。
public void setName(final String name) {
this.name = name;
}
我现在的问题是,当我的支持组件的 getter 第一次或在他生命的某个早期阶段被调用时,如上所示的 getter 代码会导致 Stackoverflow 异常,因为 getAttributes.get("name") 调用 getter我的支持组件(本身)而不是获取提供给我的复合组件的属性/属性。有趣的部分是使用一个简单的 getter 只返回 this.name 而不是调用 getAttributes() 我可以在那里设置一个断点然后调用 getAttributes.get("name") (通过调试器)不会导致溢出/调用它自己的 getter 但而是返回提供给我的复合组件的属性。
我想这与支持组件和复合组件之间的耦合有关。当第一次调用 getter 时,没有给出它们之间的耦合,因此调用 getAttributes.get("name") 会导致调用我的支持组件的 getter,而后来调用不会调用它自己的 getter,而是获取提供给我的 comp 组件的属性。
任何人都知道如何解决这个问题?提前谢谢。