提交登录表单后获取javax.ejb.EJBException

时间:2015-09-14 17:15:13

标签: jpa exception-handling

我已经编写了从主页登录用户的代码,但我遇到了javax.ejb.EJBException。我的Web应用程序使用JPA,EJB和JSF。

在我的实体类中,我包含了以下命名查询。

@NamedQuery(name = "Users.findByUsernameAndPassword", query = "SELECT u FROM Users u WHERE u.username = :username AND u.password = :password"),

在我的无状态会话bean中,我创建了以下业务方法:

public Users AuthenticateUser(String username, String password) throws EJBException, SQLException { 

    Query q = em.createNamedQuery("Users.findByUsernameAndPassword");
    q.setParameter("username", username);
    q.setParameter("password", password);     
    return (Users)q.getSingleResult(); 
}

在我的EJB客户端中,我调用此方法如下:

user = usersFacade.AuthenticateUser(username, password);
if(user != null) {
    // Reditect to home page.
} else {
    // Show an error message.
}

我在输入错误密码时遇到异常。在输入正确的密码时,一切正常。在输入错误的密码时,我无法将用户重定向到主页并抛出托管bean代码中的错误消息。

请帮助我了解出现了什么问题,因为我是Java EE 7的新手。我无法正确处理EJBException和/或SQLException吗?请帮忙。

1 个答案:

答案 0 :(得分:1)

你没有分享你得到的例外情况,但如果没有结果,getSingleResult会抛出NoResultException,所以你应该用 try / catch块包裹你的电话,相应地处理这个。

相关问题