调用函数的Java Null Pointer Exception

时间:2015-01-22 09:47:24

标签: java java-ee nullpointerexception

我在java中调用函数时出错。
返回类型是void,我只是调用它并在里面显示一个字符串。

以下是窃听函数的调用:

@RequestMapping(method = RequestMethod.POST)
public String findDevicesByCriteria(@Valid @ModelAttribute Device device, BindingResult bindingResult, Model uiModel) {
    if (isCriteriaEmpty(device)) {
        uiModel.addAttribute("criteriaEmptyWarning", "error_search_criteria_empty");
        return ViewConstants.DEVICE_SEARCH_VIEW;
    }
    identityService.searchDevices(device.getSerialNumber(), device.getOwner().getSiteName(), device.getIpAdress(), device.getInstallDate(), device.getEndDate()); // the error come from here

    return ViewConstants.DEVICE_SEARCH_VIEW;
}

窃听函数界面中的原型:

/**
 * Search devices.
 *
 * @param sn the serial number of the device
 * @param site the site of it
 * @param ipAdress the ip adress of it
 * @param installDt the install date of it
 * @param endDt the end date of it
 * @return the list of device
 */
void searchDevices(String sn, String site, String ipAdress, Date installDt, Date EndDt);

最后导致问题的功能:

 public void searchDevices(String sn, String site, String ipAdress, Date installDt, Date EndDt) {

    System.out.println("toto");

}

请咨询

此致

4 个答案:

答案 0 :(得分:1)

在访问值

之前检查设备是否为空
if(device != null)
{
   identityService.searchDevices(device.getSerialNumber(), device.getOwner().getSiteName(), device.getIpAdress(), device.getInstallDate(), device.getEndDate());
}

答案 1 :(得分:1)

检查以下任何对象是否都为空。

identityService
device
device.getOwner()

答案 2 :(得分:0)

identityServiceservice中的任何一个尚未初始化,因此为空。然后,当您尝试使用它时,您会得到NullPointerException

答案 3 :(得分:0)

1.Plz。确认您是否已声明并定义了用于身份服务的bean。 (很可能它在你的控制器中是@Autowired并在你的SpringBean上下文文件中定义为bean)并纠正发现的差异(如果有的话)。

  1. 对象设备是否为空。如果是,则检查您的请求标题和正文(这会导致创建您引用的Device对象)。
  2. 如果您可以共享整个控制器文件(从调用函数的位置以及从中抛出空指针的线上调试点),那么确定问题要容易得多。