JSF2 Не удается получить доступ к компоненту SessionScoped из ViewScoped как ManagedProperty - PullRequest
4 голосов
/ 19 ноября 2011

У меня странная проблема. Afaik Я могу внедрить бин SessionScoped в область видимости, потому что он шире, чем другой. Вот мой код:

@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:

@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

почему? :)

1 Ответ

11 голосов
/ 19 ноября 2011

Вы не объявили bean-компонент с использованием @SessionScoped из javax.faces.bean пакета , но вместо этого из javax.enterprise.context пакета .Это не работает в сочетании с @ManagedBean из пакета javax.faces.bean.После этого bean-компонент по умолчанию будет использовать область запроса и будет вести себя как @RequestScoped.

Исправить импорт.

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

@ManagedBean
@SessionScoped
public class ProjectCurrentBean implements Serializable {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...