JSF bean和对象

JSF bean和对象,jsf,javabeans,managed-bean,Jsf,Javabeans,Managed Bean,我有一个JSF项目,我正在尝试做一个登录页面,在我的项目中,我有一个托管bean,它有一个用户名和密码的验证方法,我有一个bean类,其中包含setter和getter,其中包含数据库中填充的用户信息,例如(username、password、isActive、Full name),我的问题是,如果JSF el表达式中的用户信息不在托管bean中,如何在xhtml页面中调用它们 这是我的java bean: @Table(name="students_info") public class Us

我有一个JSF项目,我正在尝试做一个登录页面,在我的项目中,我有一个托管bean,它有一个用户名和密码的验证方法,我有一个bean类,其中包含setter和getter,其中包含数据库中填充的用户信息,例如(username、password、isActive、Full name),我的问题是,如果JSF el表达式中的用户信息不在托管bean中,如何在xhtml页面中调用它们

这是我的java bean:

@Table(name="students_info")
public class User {
    @Column(name="std_record_id")
    private int id;

    @Column(name="std_id")
    private String userId;

    @Column(name="first_name")
    private String firstName;

    @Column(name="web_password")
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }


    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
这是我的登录名:

    @ManagedBean
    @SessionScoped
    public class MBLogin {

        User user = new User();
        LoginDAO loginDao = new LoginDAO();

        public String validteStudent() {
            boolean valid = loginDao.validateStudent(user.getUserId(), user.getUserId());
            if (valid) {
                HttpSession session = SessionUtils.getSession();
                session.setAttribute("username", user);
                return "student";
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,
                        "Incorrect Username and Passowrd", "Please enter correct username and Password"));
                return "login";
            }
        }
    }

为用户添加一个getter:

@ManagedBean
    @SessionScoped
    public class MBLogin {

        User user = new User();
        LoginDAO loginDao = new LoginDAO();

        public String validteStudent() {
            boolean valid = loginDao.validateStudent(user.getUserId(), user.getUserId());
            if (valid) {
                HttpSession session = SessionUtils.getSession();
                session.setAttribute("username", user);
                return "student";
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,
                        "Incorrect Username and Passowrd", "Please enter correct username and Password"));
                return "login";
            }
        }
        public User getUser() {
            return user;
        }
    }
然后在xhtml中,您可以这样称呼它:

{user.id}
{user.firstName}

您能给我们看一下您的代码吗?根本不需要访问托管bean???@khalim我想访问托管bean,并且只有在托管bean中复制了我的实例变量、setter和getter时才能访问它们,但这没有意义,对吗?对不起,我是新来的JSF@luudvankeulen在这里,我更新了我在您的代码中的帖子,用户位于您的managedbean中。只需为用户创建一个getter,您就可以在xhtml中将其称为:
{user.id}
谢谢,先生,这很好:数据对我的getter有效,但现在我的setter不起作用了,有没有办法修复它们?只需在managedbean中添加一个setter。谢谢,先生,现在只剩下#{user.firstName}不优先于任何东西,并且我确信它使用System.out.println(user.getFirstName())打印输出时有一个值;在我的dao课程中,你能告诉我为什么会发生这种情况吗?我非常感激。