我正在尝试更新此函数中的对象:
public void priceLot(long lotId) throws Exception {
Lot lot = this.getLotById(lotId);
List list = bookService.getBooksByLotNumber(lotId);
Book book = new Book();
ProductAvailability pa = null;
float retail = 0;
for(int i = 0; i < list.size(); i++) {
book = (Book) list.get(i);
retail += book.getPrice();
}
if(retail == 0) {
retail = 1;
}
float ratio = lot.getAmount() / retail;
for(int i = 0; i < list.size(); i++) {
book = (Book) list.get(i);
pa = book.getProductAvailability();
pa.setCost(pa.getRetail() * ratio);
productAvailabilityService.saveOrUpdateProductAvailability(pa);
}
lot.setPriced(true);
this.saveOrUpdate(lot);
}
它跑到
行productAvailabilityService.saveOrUpdateProductAvailability(pa);
在这里,它只是死路而且返回NullPointerException
。我不知道为什么要这样做 - 什么都不应该是空的。这是堆栈跟踪:
java.lang.NullPointerException
com.samwellers.service.LotService.priceLot(LotService.java:69)
com.samwellers.control.admin.lotadmin.PriceLotController.handleRequest(PriceLotController.java:29)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:806)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:736)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:360)
javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
不应该将任何null传递给saveOrUpdateProductAvailability
- 并且该函数本身应该没有问题。它可以在很多其他地方工作。
答案 0 :(得分:0)
你应该提供一些信息。据我所知,在调用异常的时候,作为productAvailibilityService的pa变量都可以为null。
您是否已调试并检查了pa设置是否正确,该服务是否也可用?
答案 1 :(得分:0)
我明白了。我忘了在清单中声明此函数所在的服务需要ProductAvailabilityService。因此,没有ProductAvailabilityService可供其使用。