1

我是 Java EE 的新手,并使用 netbeans 7.1.2 开发了第一个 Java EE 登录应用程序。我有一个名为“Users”的数据库表和实体,其中包含很少的查询,一个包含持久性单元的会话 bean“UsersFacade”,下面名为“authenticate”的方法是代码

public Users authenticate(String login_id, String pwd) {       
    Users user = (Users) em.createNamedQuery("Users.authenticate")
            .setParameter("login_name", login_id) 
            .setParameter("password", pwd)
            .getResultList().get(0);

最后我有 jsf 托管 bean,它是 sessionscoped,包含两个本地成员 login_name 和密码,jsf 页面 login.xhtml 与这些字段绑定,这个 bean 还具有身份验证方法,该方法反过来调用会话 bean 'UserFacade' 身份验证消息

    @ManagedBean
    @SessionScoped
    public class Login implements Serializable {
        private String login_name;
        private String password;

        private Users user;
        private @EJB UsersFacade user_services;

        public String authenticate() {
            user = user_services.authenticate(this.getLogin_name(),this.getPassword());
            if (user != null){            
                return "home";
            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage("login", new FacesMessage("Invalid UserName and Password"));
                return "login";
            }

到目前为止,一切都很好。但是,在主页上我想显示用户表的所有数据成员,以便我可以修改值并保存记录。在主页中我编码如下:

                <h:outputText value="Welcome #{login.user.login_name}" />

假设我已经在托管 bean 中声明了用户(实体)并且我应该能够访问实体的属性但是当我运行应用程序时,我得到以下错误:

“controller.Login”类没有“用户”属性

如果我有 3 个不同的 1 个托管 bean 实现(3 个不同的用户界面用于 3 个不同的角色/类型的用户),任何人都可以建议我做错了什么以及将 jsf 页面与托管 bean 绑定的理想方法。我正在使用 JPA(实体、会话)和 JSF 托管 bean。太感谢了。

4

1 回答 1

2

“controller.Login”类没有“用户”属性

当提到的类中没有提到的属性的 getter 方法时,您将收到此错误。确保您提供了有效的 getter 方法。

public Users getUser() {
    return user;
}
于 2012-06-09T11:32:56.243 回答