应用程序作用域bean的视图未更新

时间:2012-10-25 12:57:19

标签: jsf java-ee jsf-2

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

1 个答案:

答案 0 :(得分:0)

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

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结合使用。