Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 获取记录的用户名。(JSF2)_Jsf 2_Login_Session Scope - Fatal编程技术网

Jsf 2 获取记录的用户名。(JSF2)

Jsf 2 获取记录的用户名。(JSF2),jsf-2,login,session-scope,Jsf 2,Login,Session Scope,我有一个会话范围的bean来管理我的用户登录,还有一个登录过滤器,但我不确定如何让另一个bean中的用户对象根据登录的用户显示某些数据 这是我的登录Bean: @ManagedBean(name="user") @SessionScoped public class LoginBean { private String username; private String password;

我有一个会话范围的bean来管理我的用户登录,还有一个登录过滤器,但我不确定如何让另一个bean中的用户对象根据登录的用户显示某些数据

这是我的登录Bean:

 @ManagedBean(name="user")
        @SessionScoped
        public class LoginBean {

            private String username;
            private String password;
            private UsuariosEntity current;

         public LoginBean(){}
        @EJB
        UsuariosDAO userService=new UsuariosDAO();



            public String login() {

           try{
           current = userService.buscar(username, password);

           System.out.println(current.getUsuario());
           }catch(Exception e){

           }
                if (current == null) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Unknown login, try again"));
                    return (username = password = null);
                } else {
                    return "/Contenido/vistaProcesos?faces-redirect=true";
                }
            }

            public String logout() {
                System.out.println("logout");
                FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
                return "/Login?faces-redirect=true";
            }

            public boolean isLoggedIn() {
                return current != null;
            }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public UsuariosEntity getCurrent() {
            return current;
        }



    }
登录筛选器:

@WebFilter("/Contenido/*")
public class FiltroLogin implements Filter {

    @Override
    public void init(FilterConfig config) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest req = (HttpServletRequest) request;
        LoginBean user = (LoginBean) req.getSession().getAttribute("user");

        if (user != null && user.isLoggedIn()) {
            // User is logged in, so just continue request.
            chain.doFilter(request, response);
        } else {
            // User is not logged in, so redirect to index.
            HttpServletResponse res = (HttpServletResponse) response;
            res.sendRedirect(req.getContextPath() + "/Login.jsf");
        }
    }

    @Override
    public void destroy() {

    }


}
这就是我想做的:

@ManagedBean(name = "procesos")
@ViewScoped
public class ProcesosBean implements Serializable {
    private List<VistaProcesosEntity> procesos;

    @PostConstruct
    public void init(){

          //i want to fill procesos List with data, depending of the user who is logged on.

       procesos=new ArrayList<VistaProcesosEntity>();

      /* LoginBean user; // i dont know from where should i get the user object.. 

       if (user.getCurrent().getTipo()=="Planta") {
        procesos= Procesos.getALL();
        }else if(user.getCurrent().getTipo()=="Exportadora"){
            procesos=Procesos.getALLbyExportadora(user.getCurrent().getUsuario());
        }  else if (user.getCurrent().getTipo()=="Productor"){
            procesos=Procesos.getALLbyProductor(user.getCurrent().getUsuario());
        } else{
           procesos= Procesos.getALL();
       }   */
    }

    public List<VistaProcesosEntity> getProcesos() {
        return procesos;
    }
@ManagedBean(name=“proceos”)
@视域
公共类processbean实现了可序列化{
私有列表程序;
@施工后
公共void init(){
//我想根据登录的用户,用数据填充procesos列表。
procesos=新的ArrayList();
/*LoginBean user;//我不知道从哪里获取用户对象。。
if(user.getCurrent().getTipo()==“Planta”){
procesos=procesos.getALL();
}else if(user.getCurrent().getTipo()=“Exportadora”){
proceos=proceos.getALLbyExportadora(user.getCurrent().getUsuario());
}else if(user.getCurrent().getTipo()=“Productor”){
procesos=procesos.getALLbyProductor(user.getCurrent().getUsuario());
}否则{
procesos=procesos.getALL();
}   */
}
公共列表getproceos(){
返回过程;
}
@ManagedBean(name=“proceos”)
@视域
公共类processbean实现了可序列化{
@ManagedProperty(value=“#{user}”)//这引用@ManagedBean命名用户
私人洛根班洛根班;
私有列表程序;
@施工后
公共void init(){
UsariosEntity current=loginBean.getCurrent();
}
}

我已经扩展了您的
processbean
一点。请注意引用的
LoginBean
,并在
init()
函数中检索
UsariosEntity
。如果您还有任何问题或不清楚(足够),请询问。

可能重复的@user1462933:是否打算使用普通的JSF支持bean?使用CDI确实会让您受益匪浅。如果您想了解更多信息:或者感谢Aquillo和Kolossus..我会查看链接。感谢您的帮助..但现在它给了我一个错误。。“com.sun.faces.mgbean.ManagedBeanCreationException:没有一个简单的定义来定义程序para el bean administrado procesos”在英语中表示类似无法为托管属性过程定义属性过程。好的,你能用更新版本的
processbean
为此创建一个新问题吗?你可以在这里引用它,我很乐意为你提供帮助。尽管为了Stackoverflow及其问题的未来可读性,新问题会更好。-->新问题是:)
@ManagedBean(name = "procesos")
@ViewScoped
public class ProcesosBean implements Serializable {
    @ManagedProperty(value="#{user}") // this references the @ManagedBean named user
    private LoginBean loginBean;

    private List<VistaProcesosEntity> procesos;

    @PostConstruct
    public void init(){
        UsariosEntity current = loginBean.getCurrent();
    }
}