0

我在 servlet 中有以下代码:

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
}

当用户在数据库中有一个电子邮件地址时,此代码可以正常工作。但是,如果数据库中的电子邮件字段为空,则 GlassFish Server 会给我一个空指针异常。

归咎于这一行的绝对是这一行:

        email_address = result.get(i).getEmail();

出于某种原因,当用户没有电子邮件时,这一行给了我刚刚描述的错误。我怎么解决这个问题?

编辑

getEmail方法是在创建实体类的时候自动生成的(我用过持久化)。

这是它的代码:

public String getEmail() {
    return email;
}
4

1 回答 1

4

我认为问题是这一行:

if(email_address.isEmpty() == false)
{
      //Send email using email address
}

当数据库的电子邮件为空时,您可能会收到null回复。您正在isEmpty()对空引用调用操作,这会导致NullPointerException.

null打电话前做检查isEmpty()

例子:

if(email_address != null && email_address.isEmpty() == false)
    {
          //Send email using email address
    }
于 2012-12-07T16:22:23.910 回答