Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 浏览器中显示多个PDF文件1 x 1_Java_Javascript_Spring_Spring Mvc_Iframe - Fatal编程技术网

Java 浏览器中显示多个PDF文件1 x 1

Java 浏览器中显示多个PDF文件1 x 1,java,javascript,spring,spring-mvc,iframe,Java,Javascript,Spring,Spring Mvc,Iframe,我有一个页面,我将显示由用户上传的文件列表(pdf文件)。 现在,我想要实现的是在这个列表下一次显示1个pdf文件 第一部分,我将调用我的控制器方法并获取列表,然后在我的jsp页面中填充该表。 第二部分我不确定,因为我应该如何处理它 返回列表的第一个方法: @RequestMapping("/tasks/viewDocuments.do") public ModelAndView viewDocuments(@RequestParam("reqId") Integer reqId) {

我有一个页面,我将显示由用户上传的文件列表(pdf文件)。 现在,我想要实现的是在这个列表下一次显示1个pdf文件

第一部分,我将调用我的控制器方法并获取列表,然后在我的jsp页面中填充该表。 第二部分我不确定,因为我应该如何处理它

返回列表的第一个方法:

@RequestMapping("/tasks/viewDocuments.do")
public ModelAndView viewDocuments(@RequestParam("reqId") Integer reqId) {
    try{
        log.info("inside viewDocuments, reqId: "+reqId);

        //get the file details and show the list on page. 

        return new ModelAndView("tasks/viewDocumentsHTML" , "wrapper" ,"" );
    }catch (Exception e) {
        log.info("error in viewDocuments: "+e);
        return new ModelAndView ("xstream", "response","system.error");
    }
}
返回pdf的第二个方法:

@RequestMapping("/tasks/showDocumentsInIframe.do")
public void showDocumentsInIframe(HttpServletRequest request, HttpServletResponse response) {
    try{
        log.info("inside showDocumentsInIframe");
        ServletOutputStream out = response.getOutputStream();

        String fileURL = "http://www.saronicferries.gr/content/pdfFiles/sample.pdf";
        URL url = new URL(fileURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        log.debug("length: "+connection.getContentLength());
        BufferedInputStream bufferedInputStream = new BufferedInputStream(connection.getInputStream());
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(out);

        int bytesRead = 0;
        byte[] buffer = new byte[1024];

        response.setContentLength(connection.getContentLength());
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline; filename=help.pdf");
        response.setHeader("Cache-Control", "cache, must-revalidate");
        response.setHeader("Pragma", "public");

        while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
            bufferedOutputStream.write(buffer, 0, bytesRead);
        }
        log.info("finishing showDocumentsInIframe");
        bufferedOutputStream.flush();

    }catch (Exception e) {
        log.info("error in showDocumentsInIframe: "+e);
        //return new ModelAndView ("xstream", "response","system.error");
    }
}
jsp页面:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
    <%@ taglib prefix="sec"
    uri="http://www.springframework.org/security/tags"%>
<link type="text/css" rel="stylesheet"
    href="<c:url value="/public/css/jquery.css"/>"></link>
<link type="text/css" rel="stylesheet"
    href="<c:url value="/public/css/portal_style.css"/>"></link>

<script type="text/javascript"
    src="<c:url value="/public/js/jquery/jquery-1.3.min.js"/>"></script>

<form>
    <table width="100%" cellspacing="0" cellpadding="0" border="1"
        style="display: inline;">
        <tr class="portlet-table-header">
            <td align="left">Sr. No.:</td>
            <td align="left">File Name:</td>
            <td align="left"></td>
            <td align="left"></td>
        </tr>
        <c:forEach var="workList" items="${wrapper.voList}">
            <tr class="portlet-table-body">
                <td>${workList.srNo}</td>
                <td>${workList.fileName}</td>
                <td><a href="javascript:taskDetails.viewDocuments()">View</a></td>
                <td><a href="javascript:taskDetails.removeDocuments()">Remove</a></td>
            </tr>
        </c:forEach>
    </table>
</form>
<br><br>
<embed id="pdfViewer" src="/tasks/showDocumentsInIframe.do" width="500" height="375" />

高级职员编号:
文件名:
${workList.srNo}
${workList.fileName}


对第二个方法的调用永远不起作用。
我做错了什么?

您是说
showDocumentsInIframe()
调用不起作用吗?你有没有试过使用某种网络流量分析器(fiddler、firebug、chrome的开发工具)来查看从浏览器发送和返回的内容?它不起作用。不,我还没有用firebug测试过。我有日志记录,但日志没有出现在我的日志文件中。无法查看完整代码、浏览它或查看日志,我必须假设您的意思是该方法正在运行,但没有执行您希望它执行的操作。我建议使用建议的工具之一(或者其他工具,如WireShark,如果您愿意的话)查看服务器的响应结果。你可能会得到一个400,在这种情况下,我会说你有一个问题,你的客户没有设置正确的接受头。因为有东西爆炸了,你可能会得到500分。你可能会得到一个402:找不到。除非你仔细看,否则无法判断。谢谢你的投入。我将使用firebug进行检查。因此,再次说明需要查找的内容:HTTP响应代码和响应负载(我是否获得了200 OK或其他一些我不期望的响应代码,我是否获得了HTML/JSON/XML而不是预期的PDF)。有关返回代码,请参阅W3C的页面: