我正在编写一个定义了自定义ComboBox的应用程序(我们称之为MyComboBox)。我想在两个不同的面板中分别使用它(假设APanel和BPanel)。注入层次结构如下:
BPanel has MyComboBox injected
MyWindow has BPanel injected
APanel has MyWindow AND MyComboBox injected
问题是我向BPanel的MyComboBox添加了不同的侦听器/操作,向APanel的MyComboBox添加了不同的侦听器/操作,但是由于它在一个“注入狂潮”内,因此仅创建了MyComboBox的一个实例,并且共享了所有侦听器。
我已经尝试过将changin范围从@Dependant(默认值)更改为@RequestScoped,但没有帮助。
我自己发现了两种解决此问题的方法:
使用标准Java构造函数手动创建组合框。
使MyComboBox抽象,并创建两个扩展它的类,例如:
MyAPanelComboBox扩展了MyCombobox {
//这里不需要
}
MyBPanelComboBox扩展了MyCombobox {
//这里不需要
}
上述两种方法都不能令我满意,我想知道是否存在一种简单,干净的方法来解决我的问题。
最佳答案
我现在无法尝试,但是如果我正确地用MyComboBox
注释@Dependant
类(或没有任何注释)应该可以。
无论如何,可能有一种解决方法
@Inject
private Instance<MyCombobox> comboxboxInstance;
并获得新的实例
comboxboxInstance.get();