JSF保存不同用户的组件中的值

时间:2014-09-30 23:00:09

标签: spring jsf jsf-2

我是JSF的新手,我正在尝试使用JSF 2和Richfaces + Spring(3.2.3)+ Hibernate(3.6)。应用程序服务器是JBoss 7.1。问题是当我部署我的应用程序并在我的计算机中使用它时效果很好,但当我在我的局域网中的另一台计算机或同一台计算机中的其他浏览器中使用它时,第一次使用中存储的所有值都设置在所有领域。我不得不说应用程序运行良好,但即使我在同一时间在不同的计算机上使用它,似乎有一个用户正在使用它。

我也在Cloudbees中部署了它,但它通过互联网也有同样的问题。

PD。我搜索了其他类似的问题,但我找不到答案。

我的login.xhtml:

<h:form>                
            <h:panelGrid columns="2">
                <h:outputLabel value="Usuario "/>
                <h:inputText id="txt_usuario" value="#{login.usuario}" required="true" requiredMessage="Debe ingresar su usuario."/><br/>
                <h:message for="txt_usuario" />

                <h:outputLabel value="Password "/>
                <h:inputSecret id="pwd_password" value="#{login.password}" required="true" requiredMessage="Debe ingresar su password."/><br/>
                <h:message for="pwd_password" />
            </h:panelGrid>
            <h:commandButton value="Login" action="#{login.iniciarSesion()}"/>
        </h:form>

package com.ejemplo.app.controller;

import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.ejb.PostActivate;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ejemplo.app.entidades.Usuario;
import com.ejemplo.app.service.UsuarioService;
import com.ejemplo.app.util.Constantes;

@Component("login")
@ManagedBean(name = "login")
@SessionScoped
public class LoginController {

    @Autowired
    private UsuarioService usuarioService;

    private String usuario;
    private String password;

    public LoginController() {

    }

    public String iniciarSesion() {
        try {
            Usuario login = usuarioService.validarIngreso(usuario, password);

            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.getApplication().createValueBinding("#{sessionScope.user}").setValue(facesContext, login);

            if(login.getTipo().equalsIgnoreCase(Constantes.CARGO_RESIDENTE))
                return "residente/home";
            else if(login.getTipo().equalsIgnoreCase(Constantes.CARGO_LOGISTICA))
                return "logistica/home";
            else if(login.getTipo().equalsIgnoreCase(Constantes.CARGO_ADMINISTRADOR))
                return "administrador/home";
            else
                System.err.println("Usuario no encontrado.");

        } catch (Exception e) {
            System.err.println(e.getMessage());
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuario no encontrado.", "Descripcion del mensaje."));
        }       
        return "solicitud_materiales";      
    }

    public String getUsuario() {
        return usuario;
    }
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

0 个答案:

没有答案