Session d'accès étendue de haricot de la portée de la requête bean

Je suis en train d'utiliser un motif trouvé sur un IceFaces page.(Je ne suis pas en utilisant IceFaces, à l'aide de PrimeFaces)

Dans ce cas, j'ai deux grains:

UserController et Usermodel

Sur mon UserModel j'ai un exemple de UserVO (créé par un autre programmeur).
Sur Mon UserController j'ai ceci:

@ManagedBean
@RequestScoped
public class UserController implements Serializable
{

    private static final long serialVersionUID = 1L;
    private UserBO bo;
    private UserModel model;

    public UserController()
    {
        bo = new UserBO();
        model = new UserModel();
    }

    public void Login() throws IOException
    {
        model.setUserVo(bo.executeLogin(model.getUserVo()));
        ExternalContext externalContent = FacesContext.getCurrentInstance().getExternalContext();
        if (!model.getUserVo().isError())
        {
            model.setLoggedIn(true);
            externalContent.getSessionMap().put("userSession", model);
            externalContent.redirect(externalContent.getRequestContextPath() + "/views/request/search.html");
        } else
        {
            model.setLoggedIn(false);
            FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, model.getUserVo().getMessage(), model.getUserVo().getLogin());
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        }
    }

    public UserBO getBo()
    {
        return bo;
    }

    public void setBo(UserBO bo)
    {
        this.bo = bo;
    }

    public UserModel getModel()
    {
        return model;
    }

    public void setModel(UserModel model)
    {
        this.model = model;
    }
}

Comme vous pouvez le voir, j'ai créer une nouvelle instance de UserModel et avec ce qui a été renvoyé de la bo.executeLogin() et il est au travail, mon objet est retourné.

S'assurer que l'utilisateur est connecté, j'ai un bien sur mon UserModel:

@ManagedBean
@SessionScoped
public class UserModel
{

    private UserVO userVo;
    private Boolean loggedIn = false;

    public UserModel()
    {
        userVo = new UserVO();
    }

    public UserVO getUserVo()
    {
        return userVo;
    }

    public void setUserVo(UserVO userVo)
    {
        this.userVo = userVo;
    }

    public Boolean getLoggedIn()
    {
        return loggedIn;
    }

    public void setLoggedIn(Boolean loggedIn)
    {
        this.loggedIn = loggedIn;
    }

J'ai un modèle.xhtml avec:

<ui:fragment rendered="#{userModel.loggedIn}">
            <ui:include src="../includes/top.xhtml"/>
</ui:fragment>

Et le truc, c'est qu'il n'est pas de travail, n'est pas le loggedIn la valeur de la propriété.

Ma conjecture est que l'accès de cette façon, je suis un peu en créant une nouvelle instance de UserModel, si oui, c'est un problème parce que mon UserController n'est pas de session étendu, seuls les UserModel

MODIFIER

Au lieu d'utiliser ce loggedIn bien je sais que je peux simplement de vérifier si le UserModel userVo propriété est définie, mais le problème est sur la session d'étendue de haricot, je ne peux pas y accéder à partir de UserController, où il est défini, car il n'est pas l'étendue de la session, et mon modèle.xhtml sera utilisé par chaque page.

Avez-vous un lien vers le IceFaces exemple vous avez suivi?
désolé mec, je n'ai pas le lien plus et ne pouvez pas le trouver, mais voici quelques utiles. stackoverflow.com/questions/7223055/... et stackoverflow.com/questions/5104094/... sur ce deuxième lien de vérifier la réponse choisie, c'est une explication fondée sur la IceFaces post, j'espère que ça aide

OriginalL'auteur Gerep | 2012-05-18