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
Jpa 如何在JSF应用程序中链接实体、会话和管理bean_Jpa_Jsf 2_Managed Bean - Fatal编程技术网

Jpa 如何在JSF应用程序中链接实体、会话和管理bean

Jpa 如何在JSF应用程序中链接实体、会话和管理bean,jpa,jsf-2,managed-bean,Jpa,Jsf 2,Managed Bean,我不熟悉JavaEE,并使用NetBeans7.1.2开发了第一个JavaEE登录应用程序。我有一个名为“Users”的db表和实体,其中包含一些新的查询,一个包含持久性单元的会话bean“UsersFacade”,下面名为“authenticate”的方法是代码 public Users authenticate(String login_id, String pwd) { Users user = (Users) em.createNamedQuery("Users.a

我不熟悉JavaEE,并使用NetBeans7.1.2开发了第一个JavaEE登录应用程序。我有一个名为“Users”的db表和实体,其中包含一些新的查询,一个包含持久性单元的会话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和password,jsf page login.xhtml与这些字段绑定,这个bean还有一个authenticate方法,它反过来调用会话bean“UserFacade”authenticate消息

    @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";
            }
到目前为止,一切都很顺利。不过,在主页上,我希望显示users表的所有数据成员,以便修改值和保存记录。在主页中,我编写了如下代码:

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

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

类“controller.Login”没有属性“user”

如果我对一个托管bean有3个不同的实现(3个不同的用户界面,3个不同的角色/类型的用户),有人能指出我做错了什么,以及什么是将jsf页面与托管bean绑定的理想方式吗。我正在使用JPA(实体,会话)和JSF托管bean。非常感谢你

类“controller.Login”没有属性“user”

当所提到的类中没有用于所提到属性的getter方法时,将出现此错误。确保提供了有效的getter方法

public Users getUser() {
    return user;
}