Jpa 如何在JSF应用程序中链接实体、会话和管理bean
我不熟悉JavaEE,并使用NetBeans7.1.2开发了第一个JavaEE登录应用程序。我有一个名为“Users”的db表和实体,其中包含一些新的查询,一个包含持久性单元的会话bean“UsersFacade”,下面名为“authenticate”的方法是代码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
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;
}