【问题标题】:JSF beans and object [duplicate]JSF bean 和对象 [重复]
【发布时间】:2017-07-17 22:53:53
【问题描述】:

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

这是我的 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;
    }
}

这是我的 MBLogin:

    @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";
            }
        }
    }

【问题讨论】:

  • 你能告诉我们你的代码吗?
  • 根本不使用托管 bean??
  • @khalilM 我想访问托管 bean,并且只有在托管 bean 中复制了我的实例变量以及 setter 和 getter 时才能访问它们,但这没有任何意义,对吧?对不起,我是 JSF 的新手
  • @luudvankeulen 我在这里更新了我的帖子
  • 在您的代码中,用户在您的 managedbean 中。只需为用户创建一个 getter,您可以在 xhtml 中将其调用为:#{user.id}

标签: jsf javabeans managed-bean


【解决方案1】:

为用户添加一个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}

【讨论】:

  • 感谢先生,工作正常:D
  • 对我的 getter 有用,但现在我的 setter 不工作了,有什么办法可以修复它们吗?
  • 只需向 managedbean 添加一个 setter。
  • 谢谢先生,现在唯一剩下的就是#{user.firstName} 没有打印任何东西,我确信它的值是它使用 System.out.println(user.getFirstName ());在我的 dao 课上,你能建议为什么会发生这种情况吗?我真的很感激。
猜你喜欢
  • 2011-05-16
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 2010-10-18
  • 2017-03-13
  • 2013-01-26
  • 1970-01-01
  • 2013-01-31
相关资源
最近更新 更多