在每个请求中实例化JSF会话ManagedBean

Fer*_*ndo 1 jsf constructor javabeans

我的应用程序中有一个@ManagedBean,带有@sessionScoped anotation.

问题是为每个请求调用public no arg构造函数,因此我的字段被重置,我的模型逻辑进入空间.

我尝试构建并清理,重置glassFish,但仍然在每次请求时调用bean构造函数.我还有一个faces-config.xml来控制页面导航.

我可以通过在faces-config中重新声明bean来解决这个问题,现在它可以工作了......

有关为什么会发生这种情况的任何想法?如果我删除faces-config,问题仍然存在.

谢谢大家!

Bal*_*usC 5

如果@SessionScoped不是javax.faces.bean软件包,可能会发生这种情况,而不是完全不同的API,例如javax.enterprise.context软件包.双击您的导入并小心IDE自动完成.IDE倾向于按包名对自动建议进行排序,因此javax.enterprise.context它将显示为第一选项.

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class Bean {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果你没有javax.faces.bean在a上使用任何范围注释@ManagedBean,那么bean将默认为@NoneScoped,这意味着它是在每个#{bean}EL评估上构建的.

也可以看看: