0

我在应用程序范围的 bean 中有一个变量。用户可以通过方法调用触发此变量的更新。现在的问题是用户在刷新 jsf 页面后没有得到这个变量的更新视图。如果已经测试了变量是否正确更新并且是正确的,那么更新方法工作正常。应用程序范围 bean 中的变量是否声明为 final 或者这里有什么问题?

4

1 回答 1

0

如果您使用了错误的注释组合,就会发生这种情况。例如

import javax.enterprise.context.ApplicationScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean
@ApplicationScoped
public class App {}

这里,范围注释来自 CDI,bean 管理注释来自 JSF。JSF 不识别 CDI 范围注释,因此默认为@NoneScoped. 即,在每一次 EL#{app}评估上都会重建 bean。这解释了您所看到的症状。

您还需要将范围注释修复为来自 JSF。

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean
@ApplicationScoped
public class App {}

CDI 范围注释只能与 CDI bean 管理注释结合使用@Named

于 2012-10-25T16:01:34.467 回答