【发布时间】:2012-02-08 22:53:12
【问题描述】:
如果有人帮助我解决以下问题,我将不胜感激。
我有一份碧玉报告,我填写了PrintingBean,一切都很好。当我点击打印预览按钮(打开小程序)时,我的应用程序在以下位置引发空指针异常:
if (bean.getPrintingDataList() != null && !bean.getPrintingDataList().isEmpty())
它似乎创建了新会话(但我在 gui 上看不到,一切都很好)。我的 manageBean 是一个 SessionScoped。这是我的整个方法:
private void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
JasperPrint jasperPrint = null;
try {
PrintingBean bean = (PrintingBean) request.getSession().getAttribute("printMB");
if (bean.getPrintingDataList() != null && !bean.getPrintingDataList().isEmpty()) {
jasperPrint = printManager.print(bean.getPrintingDataList());
}
} catch (Exception ex) {
Logger.getLogger(JasperPrintServlet.class.getName()).log(Level.SEVERE, null, ex);
}
if (jasperPrint != null) {
response.setContentType("application/octet-stream");
ServletOutputStream ouputStream = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
oos.writeObject(jasperPrint);
oos.flush();
oos.close();
ouputStream.flush();
ouputStream.close();
}
}
【问题讨论】:
-
那是不可能的。难道你实际上的意思是它在给定的行上返回
null,并且NullPointerException实际上被扔到if块之后你访问bean?这会更有意义,并且可以得到回答。 -
是的,你是对的,它在 if 块中抛出 NPE,因为 request.getSession() 没有属性(大小为 0)并且 .getAttribute("printMB") 根本不存在。你知道为什么以及如何处理这个问题吗?感谢您的宝贵时间
标签: jsf servlets jasper-reports