JSF2无法从ViewScoped作为ManagedProperty访问SessionScoped bean

kri*_*stu 4 jsf jsf-2

我有一个奇怪的问题.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;
}
Run Code Online (Sandbox Code Playgroud)

2个托管bean:

@ManagedBean
@SessionScoped
public class ProjectCurrentBean implements Serializable  {
Run Code Online (Sandbox Code Playgroud)

@ManagedBean
@SessionScoped
public class UserCredentialsBean  implements Serializable {
Run Code Online (Sandbox Code Playgroud)

它适用于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
Run Code Online (Sandbox Code Playgroud)

为什么?:)

Bal*_*usC 11

您还没有宣布使用bean @SessionScopedjavax.faces.bean,而是从javax.enterprise.context.这不结合工作中@ManagedBeanjavax.faces.bean包.然后bean将默认为请求范围并且表现得像@RequestScoped.

修复你的进口.

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

@ManagedBean
@SessionScoped
public class ProjectCurrentBean implements Serializable {
Run Code Online (Sandbox Code Playgroud)

  • 注意IDE自动完成. (4认同)