通常,默认范围是请求范围.我试图删除范围注释并期望bean有一个请求bean scopped行为(通过在前一页上返回一个提交的值,我记得我已经尝试过这个过去并且它工作正常)但我没有得到任何关于表达语言连接到它.那么什么是默认范围以及它为什么不是相同的行为?!
Bal*_*usC 43
取决于谁在管理bean.
如果它是JSF via @ManagedBean
,则默认为@RequestScoped
,如javadoc中所述:
如果省略范围注释,则必须像处理
RequestScoped
注释一样处理bean
如果它是CDI via @Named
,则默认为@Dependent
,如Weld文档中所述:
最后,CDI具有所谓的依赖伪范围.这是未明确声明范围类型的bean的默认范围.
结果是在每个单独的EL表达式上新创建了bean实例.因此,想象一个登录表单,其中两个输入字段引用bean属性,而一个命令按钮引用bean操作,因此总共有三个EL表达式,那么实际上将创建三个实例.一个用户名设置,一个用密码设置,另一个用于调用操作.在效果中,这与JSF的行为相同@NoneScoped
.这证实了您所看到的症状.
如果它是Spring via @Component
,那么它默认为@Scope("singleton")
,如javadoc中所述:
默认:
"singleton"
在效果中,这与JSF @ApplicationScoped
和CDI的行为相同@ApplicationScoped
.
Netbeans与它无关.它只是一个像记事本一样的编辑工具,但随后还有1000多个额外的功能.