2017-05-27 25 views
0

我会通过在当按钮被点击PDF文件应该得到下载非常混乱的局面,我的设计和要求是一样的东西如下:

  1. 点击有两个按钮save和按钮
  2. 显示确认框open
  3. 如果保存被选中,那么PDF应该被保存在本地计算机上。

第三点是我所面临的问题,因为在没有确认框 以下形式使用submit button(没有确认框)时提交文件,然后是越来越下载。下面是代码:

<button type="submit" id="Export">xxx_tutorial</button> 

但是,当只有一个buttononclick事件确认框写在Jquery,我已经使用$Post提交数据的servlet在数据传递到servlet中,但文件没有得到下载。现在

我的问题是:

  1. 是通过$post传递数据不等同于submit与传递数据一起Servlet时点击提交按钮会发生什么。

  2. 当数据被传递给servlet时,为什么文件没有被下载到相同的代码正在使用提交按钮时没有确认框。

真的我迷路了,无法理解确切的。请专家帮忙,我很乐意提供建议。

下面是代码:

JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.2/themes/redmond/jquery-ui.css"> 
<script src="https://code.jquery.com/jquery-1.11.2.js"></script> 
<script src="https://code.jquery.com/ui/1.11.2/jquery-ui.js"></script> 
<!-- User Defined Js file --> 
<script type="text/javascript"> 

$(document).ready(function(){ 
      $('#Export').click(function(event) { 
      event.preventDefault(); 
     var currentForm = $(this).closest('form'); 

     var dynamicDialog = $('<div id="conformBox">'+ 
     '<span style="float:left; margin:0 7px 20px 0;">'+ 
     '</span>Open or save the document</div>'); 

     dynamicDialog.dialog({ 
       title : "Open/Save Dialog", 
       closeOnEscape: true, 
       modal : true, 

       buttons : 
         [{ 
           text : "Export", 
           click : function() { 

            $(this).dialog("close"); 
            var data = "xxx_tutorial"; 
            $.post('button', {param: data}, function(param){ 


      }); 
           } 
         }, 
         { 
           text : "Open", 
           click : function() { 
             $(this).dialog("close"); 
           } 
         }] 
     }); 
     return false; 
    }); 

}); 
</script> 
</head> 
<body> 
     <button type="button" id="Export">xxx_tutorial</button> 

</body> 
</html> 

的Servlet:

package com.testcase.testing; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class button 
*/ 
@WebServlet("/button") 
public class button extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public button() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     doPost(request, response); 
     } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 

     response.getWriter().append(request.getParameter("param")); 
     performTask(request,response); 
    } 

    private void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException, 
    IOException { 

     String pdfFileName=""; 

     if(request.getParameter("param")==null){ 

    } 
    else if(request.getParameter("param").matches("sap_webi_tutorial")){ 
     System.out.println("in create pdf file name part"); 
     pdfFileName = "/"+request.getParameter("param")+".pdf"; 
    } 
     else{ 

     } 

String contextPath = getServletContext().getRealPath(File.separator); 
File pdfFile = new File(contextPath + "/xxx_tutorial.pdf"); 
response.setContentType("application/pdf"); 
response.addHeader("Content-Disposition", "attachment; filename=" + "/xxx_tutorial.pdf"); 
response.setContentLength((int) pdfFile.length()); 

FileInputStream fileInputStream = new FileInputStream(pdfFile); 
PrintWriter responseOutputStream = response.getWriter(); 
int bytes; 
    while ((bytes = fileInputStream.read()) != -1) { 
    responseOutputStream.write(bytes); 
} 
fileInputStream.close(); 
responseOutputStream.flush(); 
responseOutputStream.close(); 
    } 
} 

回答

0

如果submit形式,在浏览器中显示的页面将接收该操作的reults - 这就像点击一个链接说。

调用$.post()将在后台发送数据,并将结果数据返回到您的回调函数(在发布的代码中为)。所以你必须处理这个函数的结果。

post documentation背景

也许你可以做你的逻辑,然后,而不是调用$.post()您只需ubmit形式从JavaScript代码中?

检查这直接提交表单:

JavaScript post request like a form submit

+0

感谢您的回答爵士...其实我下载的代码是在servlet的,所以我刚才通过数据的servlet,但我怎么捉下载文件回到jsp有没有办法做到这一点,因为我尝试使用JavaScript,但我的要求是我需要有一个自定义确认框,这是只可能通过JQuery – Siva

相关问题