执行Servlet后,JSP页面不会重定向到Servlet页面

时间:2013-12-17 06:00:50

标签: jquery jsp servlets datepicker

我有奇怪的问题。我的JSP页面中有一个使用来自https://github.com/dangrossman/bootstrap-daterangepicker的datepicker的页面。 datepicker将使用以下语法执行名为 getKodeTrsInv 的servlet页面:

 function(start, end) {
      console.log("Callback has been called!");
       $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
       var start = start.format('YYYY-MM-D');
       var end = end.format('YYYY-MM-D');
       getTransaction(start, end);
 }

功能 getTransaction

  function getTransaction(start,end){
        $.ajax({
            type:"POST",
            url:"<%= request.getContextPath() %>/getKodeTrsInv",
            data:{
                startdate:start,
                enddate:end
            },
            success:function(msg){
                //alert("Data Inserted" + msg); 
            },
            error:function(msg){
                alert("Data Failed to save" + msg); 
            }
        });
    }

执行servlet以使用函数 functionGetTransactionTime(startdate,enddate)显示来自名为MasterPesanan的控制器的结果;

这是servlet页面:

 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    System sys = new System();

    try {
        /* GET PARAMETER INPUTS */
        Date sd = sys.convertStringToDate(request.getParameter("startdate"));
        Date ed = sys.convertStringToDate(request.getParameter("enddate"));
        /* CONVERT TO DATE SQL TO EXECUTED*/
        java.sql.Date startdate = new java.sql.Date(sd.getTime());
        java.sql.Date enddate = new java.sql.Date(ed.getTime());

        /*EXECUTE THE CURRENT DATA*/
        MasterPesanan psn = new MasterPesanan();
        List<Pesanan> pesanan = psn.functionGetTransactionTime(startdate,enddate);
        if(pesanan != null){
            request.setAttribute("kodeTransaksi", pesanan);
            request.getRequestDispatcher("system/invoice.jsp").forward(request,response);
       } else {
           java.lang.System.out.println("Get Kode Transaction For Inovice Error");
       }
    } catch(ParseException pe){
        java.lang.System.out.println("Get Kode Transaction For Invoice error : " + pe.getCause());
    } catch(Exception e) {
        java.lang.System.out.println("Error Exception " + e);
    }

    finally {            
        java.lang.System.out.println("Get Kode Transaction For Invoice has been executed");
    } 
}

问题是,当执行servlet时,servlet可以工作,但PAGE不是重定向的。我检查了FIREBUG,servlet被重定向到那里,但是在我的浏览器中它被卡住了。

有关详细信息,函数 functionGetTransactionTime(startdate,enddate); 的结果列表显示在firebug中。 有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

重定向只会在您实际导航到servlet时重定向页面。如果通过Ajax调用servlet,则返回到Ajax的响应将是重定向到servlet的页面的响应,但用户看到的页面不会重定向。只返回Ajax的文本将来自servlet重定向到的页面。换句话说,重定向仅在后台发生。用户仍将看到相同的页面。如果你想要一个真正的重定向,用户看到的页面发生变化,那么就不要使用Ajax来调用servlet:即用HTML表单(或常规链接)将用户发送到servlet。