2014-09-03 148 views
0

我想從我的應用程序發送2個數組到另一個應用程序。 我使用下面的代碼從一個應用程序發送數組到另一個應用程序

$.ajax({ 
    url:"http://bdln2459:50000/pg.com~prf~scprf~dc_pte_sbuyer/PTEMain.jsp", 
    type:"post", 
    data: {"guvArray":guvArray,"vendorCodeArray":vendorCodeArray} 
success: function(){ 
    alert("success");        
} 

}); 

而在其他應用JSP PTEMain.jsp我接受像下面

String[] arr1= request.getParameterValues("guvArray[]"); 
String[] arr2= request.getParameterValues("vendorCodeArray[]"); 

當我嘗試打印這些ARR1和ARR2我收到空。我必須在web.xml中做任何映射嗎?請幫助

+0

如果我沒有錯,那麼你不需要在參數名稱後面使用「[]」。 – 2014-09-03 04:58:48

回答

0

這些是基於瀏覽器的應用程序。該頁面的內容將不會自動更新,除非您使用一些技術,如ajax,可以從您的數據庫檢索值,而無需重新執行您的jsp代碼。

您使用此URL

"http://bdln2459:50000/pg.com~prf~scprf~dc_pte_sbuyer/PTEMain.jsp" 

,所以我假設你正在使用的scriptlet。

<% 
String[] arr1= request.getParameterValues("guvArray[]"); 
String[] arr2= request.getParameterValues("vendorCodeArray[]"); 
%> 

所以你的jsp頁面發生了什麼。在它執行jsp頁面內的所有代碼之後,就完成了。除非刷新頁面。

我認爲有一種方法可以幫助實現你想要的是將數據發送到你的控制器,在你的控制器中嘗試將它保存在存儲庫(數據庫也許)或其他類型的存儲庫中,或者僅用於調試目的只使用static字段來檢查數據是否到達目的地。

的URL可以是這樣的:

"http://bdln2459:50000/pg.com~prf~scprf~dc_pte_sbuyer/servlet url mapping/servlet name" 

,並在你的servlet /控制器:

static String[] arr1; 
static String[] arr2; 
在doPost方法

(),或在你的函數(如果你使用Spring)

public void receiveData(HttpServletRequest request,HttpServletResponse response){ 

    arr1= (String[])request.getParameterValues("guvArray[]"); 
    arr2= (String[])request.getParameterValues("vendorCodeArray[]"); 

    request.getSession().setAttribute("guveArray[]",arr1); 
    request.getSession().setAttribute("vendorCodeArray[]",arr2); 
} 

,如果你要使用的調度

public void receiveData(HttpServletRequest request,HttpServletResponse response){ 

     String[] arr1 arr1= (String[])request.getParameterValues("guvArray[]"); 
     String[] arr2= (String[])request.getParameterValues("vendorCodeArray[]"); 

     request.setAttribute("guveArray[]",arr1); 
     request.setAttribute("vendorCodeArray[]",arr2); 

     request.getRequestDispatcher("jsp page").forward(request, response); 
    } 
+0

我可以只使用request.setAttribute(「guveArray」,arr1);並像這樣調度RequestDispatcher dispatcher = request.getRequestDispatcher(「/ PTEMain.jsp」); \t dispatcher.forward(request,response); – 2014-09-03 05:36:57

+0

在這種情況下,您需要將其放入會話中。因爲您沒有將請求分派到其他頁面,這意味着它仍然爲空。由於您是從其他應用程序發送的,因此請使用 – 2014-09-03 05:37:55

+0

。第二個應用程序不會觸發自己。讓我舉個例子,如果你在第二個應用程序中發送數據,它不會自動打開第二個應用程序。 – 2014-09-03 05:40:13

相關問題