【发布时间】:2014-05-23 16:51:33
【问题描述】:
我正在编写一个应用程序,其中定义了一个自定义 ComboBox(我们称之为 MyComboBox)。我想在两个不同的面板中单独使用它(比如说 APanel 和 BPanel )。注入层次结构如下:
BPanel has MyComboBox injected
MyWindow has BPanel injected
APanel has MyWindow AND MyComboBox injected
问题是我在 BPanel 中的 MyComboBox 中添加了不同的侦听器/操作,在 APanel 中的 MyComboBox 中添加了不同的侦听器/操作,但是因为它在一个“注入狂欢”中,所以只创建了一个 MyComboBox 实例并且所有侦听器都是共享的。
我已经尝试将范围从@Dependant(默认之一)更改为@RequestScoped,但没有帮助。
我自己找到了两种解决此问题的方法:
- 使用标准 Java 构造函数手动创建组合框。
-
使 MyComboBox 抽象并创建两个扩展它的类,例如:
MyAPanelComboBox 扩展 MyCombobox { // 这里不需要 }
MyBPanelComboBox 扩展 MyCombobox { // 这里不需要 }
以上都不满足我,我想知道是否存在一种简单而干净的方法来处理我的问题。
【问题讨论】:
-
您使用的是哪个版本的 CDI?