【问题标题】:JSF2 Can't reach SessionScoped bean from ViewScoped as ManagedPropertyJSF2 无法从 ViewScoped 作为 ManagedProperty 访问 SessionScoped bean
【发布时间】:2011-11-19 14:43:44
【问题描述】:

我有一个奇怪的问题。 Afaik 我可以将 SessionScoped bean 注入到 viewscoped 中,因为它比另一个更宽。这是我的代码:

@ManagedBean
@ViewScoped
public class ProjectBean implements Serializable {

@ManagedProperty(value="#{projectCurrentBean}")
private ProjectCurrentBean currentBean;

public void setCurrentBean(ProjectCurrentBean currentBean) {
    this.currentBean = currentBean;
}     

@ManagedProperty(value="#{userCredentialsBean}")
private UserCredentialsBean activeUser;

public void setActiveUser(UserCredentialsBean activeUser) {
    this.activeUser = activeUser;
}

2个托管bean:

@ManagedBean
@SessionScoped
public class ProjectCurrentBean implements Serializable  {

@ManagedBean
@SessionScoped
public class UserCredentialsBean  implements Serializable {

它与 UserCredentialsBean 一起工作正常,但是当我放置 ProjectCurrentBean 时它失败了:

Unable to create managed bean projectBean. The following problems were found: - The scope of the object referenced by expression #{projectCurrentBean}, request, is shorter   than the referring managed beans (projectBean) scope of view

为什么? :)

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:

    您没有使用来自javax.faces.bean package@SessionScoped 声明bean,而是来自javax.enterprise.context package。这不能与来自javax.faces.bean 包的@ManagedBean 结合使用。然后 bean 将默认为请求范围并表现得像 @RequestScoped

    修复你的导入。

    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    
    @ManagedBean
    @SessionScoped
    public class ProjectCurrentBean implements Serializable {
    

    【讨论】:

    • 小心使用 IDE 自动完成功能。
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2012-11-02
    • 2015-06-03
    • 2013-11-20
    • 2012-12-20
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多