【问题标题】:display pdf / download pdf from Oracle databse using spring and hibernate使用spring和hibernate从Oracle数据库显示pdf/下载pdf
【发布时间】:2014-03-12 17:17:41
【问题描述】:

我有一个带有字段的对象

@Column(name = "PDF")
@Lob @Basic(fetch=javax.persistence.FetchType.LAZY)
private byte[] pdf;

我的 dao 使用实体管理器 findbyid() 方法成功检索了这个对象。

当请求到达我的控制器时,我想在浏览器上显示此 pdf 或下载 pdf。

这就是我所做的。

@Autowired
DocDownloadService docService;
HttpServletResponse response;
@RequestMapping("/document/view/{docID}")
public String getAlert(@PathVariable("docID") String docId){
    docService.downloadDoc(docId, response);
    return null;
}

还有我的服务

@Override
@Transactional
public String downloadDoc(String docId, HttpServletResponse response){

    MyDoc doc = this.getDocById(docId); //brings document object from my DAO

    try {
        response.addHeader("Content-Disposition", "attachment;filename=report.pdf");
        response.setContentType("application/pdf");
        response.getOutputStream().write(doc.getPdf(), 0, doc.getPdf().length);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return null;
}

我在“response.addheaders”行收到空指针异常。我不知道为什么。我查看了其他帖子并尝试了所有这些方法,但没有帮助。 任何指针将不胜感激。

【问题讨论】:

    标签: web-services hibernate jakarta-ee spring-mvc


    【解决方案1】:

    试试这个

    @RequestMapping("/document/view/{docID}")
    public String getAlert(@PathVariable("docID") String docId, HttpServletResponse response){
    

    此外,最好在控制器中处理 response.outputstream,而不是在服务中处理它。

    【讨论】:

    猜你喜欢
    • 2013-08-12
    • 2022-11-02
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多