scope - 在 CDI Weld 中查看范围

标签 scope cdi jboss-weld

我想使用 @ViewScoped - 我的应用程序中某些网页的支持 bean 的范围。我还使用 CDI 将依赖项注入(inject)支持 bean。

但是,当我使用像这样注释的支持 bean

@ManagedBean
@ViewScoped

@Inject
someDependency (...)
@Inject注释不会注入(inject)任何东西,我得到一个 NullPointerException一旦我访问依赖项。

然而,当我用
@Named
@ViewScoped


@Inject
someDependency (...)

注入(inject)工作正常,但现在 @ViewScoped被忽略,因为它不是 CDI/Weld 的一部分。

如何使用 @ViewScoped与 CDI Weld 一起?

最佳答案

问题是您将简单的托管 bean 与 CDI 托管 bean 混合在一起,它们不能一起工作。 Managed Beans 是一个简单的框架,用于定义 bean 及其注入(inject)的 bean。 CDI 是一个独立的野兽,具有各种额外的优点。

但是,托管 bean 不能使用 CDI 注入(inject)点,但可以使用 ViewScope,而 CDI bean 使用 CDI 注入(inject)点和所有好东西,但 ViewScope 不可用。

要解决此问题,您必须使用 CDI 并使用 Seam-Faces 库来使用 View 范围,或者放弃 CDI 并坚持使用简单的托管 bean,这是一个简单的实现。

干杯,

安迪

关于scope - 在 CDI Weld 中查看范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4865047/

相关文章:

Revealing Module Pattern 的 Javascript 作用域问题

eclipse - 在 Java EE 开发中快速周转的理想设置是什么?

javascript - for、for-in、for-of循环中变量作用域规则不一致

C++ : Scope of struct inside a class

jakarta-ee - Glassfish 4.0 中的 Bean-Validation 1.1 - CDI 注入(inject)未按预期工作

java - Wicket:使(启用 CDI 的)页面可序列化时要记住什么?

java - 将 CDI 装饰器添加到消息驱动 Bean

maven - 在嵌入式 Weld EE 容器中启动时 Arquillian 未找到 HTTPContext

java - Weld OSGi + Apache Felix = 找不到包

python - 更改范围之外的列表