gpt4 book ai didi

jsf - JSF 2 应用程序中默认的托管 Bean 范围是什么?

转载 作者:行者123 更新时间:2023-12-02 20:30:09 25 4
gpt4 key购买 nike

通常,默认范围是请求范围。我尝试删除作用域注释并期望 bean 具有请求 bean 作用域行为(通过返回上一页上提交的值,我记得我过去曾尝试过此操作并且工作正常),但我没有得到任何结果与其相连的表达语言。那么默认范围是什么以及为什么它的行为不一样?!

最佳答案

取决于谁在管理 bean。

如果是JSF,通过 @ManagedBean ,则默认为@RequestScoped ,如 javadoc 中所述:

If the scope annotations are omitted, the bean must be handled as if the RequestScoped annotation is present

如果是通过@NamedCDI ,则默认为@Dependent ,如 Weld documentation 中所述:

Finally, CDI features the so-called dependent pseudo-scope. This is the default scope for a bean which does not explicitly declare a scope type.

效果是在每个 EL 表达式上新创建 bean 实例。因此,想象一个登录表单,其中有两个引用 bean 属性的输入字段和一个引用 bean 操作的命令按钮,因此总共有三个 EL 表达式,那么将有效地创建三个实例。一张设置了用户名,一张设置了密码,一张调用了操作。实际上,这与 JSF @NoneScoped 的行为相同。 。这证实了您所看到的症状。

如果是 Spring ,通过 @Component ,则默认为@Scope("singleton") ,如 javadoc 中所述:

Default: "singleton"

实际上,其行为与 JSF @ApplicationScoped 相同和 CDI @ApplicationScoped .

Netbeans 与此无关。它只是一个像记事本一样的编辑工具,但具有 1000 多个额外功能。

另请参阅:

关于jsf - JSF 2 应用程序中默认的托管 Bean 范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com