Java servlet-空指针异常
我在servlet中有以下代码:Java servlet-空指针异常,java,exception,servlets,pointers,null,Java,Exception,Servlets,Pointers,Null,我在servlet中有以下代码: try { EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("Flights_AssignmentPU"); EntityManager em = emFactory.createEntityManager(); Query query = em.createNamedQuery("Passengers.findByPassportNum")
try
{
EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("Flights_AssignmentPU");
EntityManager em = emFactory.createEntityManager();
Query query = em.createNamedQuery("Passengers.findByPassportNum");
query.setParameter("passportNum", passport);
List<Passengers> result = query.getResultList();
em.close();
for(int i = 0; i < result.size(); i++)
{
name = result.get(i).getName();
surname = result.get(i).getSurname();
email_address = result.get(i).getEmail();
}
}
catch(Exception e)
{
response.sendRedirect("ErrorPage.html");
}
if(email_address.isEmpty() == false)
{
//Send email using email address
}
出于某种原因,当用户没有电子邮件时,这一行告诉我刚才描述的错误。我怎样才能解决这个问题
编辑
getEmail方法是在创建实体类时自动生成的(我使用了持久性)
代码如下:
public String getEmail() {
return email;
}
我认为问题在于这一行:
if(email_address.isEmpty() == false)
{
//Send email using email address
}
当数据库的电子邮件为空时,您可能会得到null
响应。您正在对null引用调用isEmpty()
操作,这将导致NullPointerException
在调用isEmpty()之前执行null
检查
例如:
if(email_address != null && email_address.isEmpty() == false)
{
//Send email using email address
}
我认为问题在于这一行:
if(email_address.isEmpty() == false)
{
//Send email using email address
}
当数据库的电子邮件为空时,您可能会得到null
响应。您正在对null引用调用isEmpty()
操作,这将导致NullPointerException
在调用isEmpty()之前执行null
检查
例如:
if(email_address != null && email_address.isEmpty() == false)
{
//Send email using email address
}
问题在于乘客。getEmail
您没有包括的源代码。向我们展示完整的堆栈跟踪和您的实体类。您的意思是NPE堆栈跟踪中的第一行指向您“肯定要责备”的特定行。但根据目前发布的代码逻辑,这似乎是不可能的。你能修改一下你的暗示和假设吗?顺便说一句,sendRedirect()
并没有神奇地从该方法返回……我犯了一个错误。这是南巴里确定的路线。我假设这是那条线,因为当我把它注释掉并做了一些测试时,问题根本不存在。啊,没关系,Nambari回答的评论证实了你指出这条线是完全错误的。请学习如何解释stacktraces。问题在于乘客。getEmail
您尚未包含的源代码。向我们展示完整的堆栈跟踪和您的实体类。您的意思是NPE stacktrace中的第一行指向您“肯定要责备”的特定行。但根据目前发布的代码逻辑,这似乎是不可能的。你能修改一下你的暗示和假设吗?顺便说一句,sendRedirect()
并没有神奇地从该方法返回……我犯了一个错误。这是南巴里确定的路线。我假设这是那条线,因为当我把它注释掉并做了一些测试时,问题根本不存在。啊,没关系,Nambari回答的评论证实了你指出这条线是完全错误的。“请学习如何解释这些痕迹。”马修:很高兴这有帮助。“祝你好运!”马修:很高兴这有帮助。祝你好运