2013-12-23 68 views
4

我有一個JSONArray,它有2個JSONArray對象,我從Action返回到JSP。但在JSP中,它會從Action收到的響應中引發錯誤。但我無法跟蹤這個問題。請你指導。JSONArray從Action到JSP的返回類型有多個JSONArray對象?

操作代碼:

try 
     { 
      Class<EmployeePojo> objClass= EmployeePojo.class; 
      Field[] methods = objClass.getDeclaredFields(); 
      columnJsonArrayObject=FormatDatesAndMethods.methodsData(methods);              
      masterDataJsonArrayObject=new JSONArray(); 
      String query="from EmployeePojo"; 
      employeeList= factoryImplObject.searchByQuery(query); 
      if(employeeList!=null) 
      { 
       for(int j=0;j<methods.length;j++) 
       { 
        for(int i=0;i<employeeList.size();i++) 
        { 
         masterDataColumnValuesJsonObject=new JSONObject(); 
         if((employeeList.get(i)).getWorkshopId()!=null) 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[0].getName()+"", employeeList.get(i).getId()); 
         } 
         else 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[0].getName()+"", ""); 
         } 
         if((employeeList.get(i)).getWorkshopName()!=null) 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[1].getName()+"", employeeList.get(i).getName());  
         } 
         else 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[1].getName()+"", ""); 
         } 
         if((employeeList.get(i)).getDivId()!=null) 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[2].getName()+"", employeeList.get(i).getJivId()); 
         } 
         else 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[2].getName()+"", ""); 
         } 
         if((employeeList.get(i)).getHqId()!=null) 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[3].getName()+"", employeeList.get(i).getPlace()); 
         } 
         else 
         { 
          masterDataColumnValuesJsonObject.put(""+methods[3].getName()+"", ""); 
         } 
         masterDataColumnValuesJsonObject.put("Old", "old"); 
         masterDataJsonArrayObject.put(masterDataColumnValuesJsonObject); 
        } 
        break; 
       } 
       masterObject.put(0,columnJsonArrayObject); 
       masterObject.put(1, masterDataJsonArrayObject);    
       if(masterObject!=null) 
       { 
        out.write(masterObject.toString); 
       } 
      } 
     } 
     catch(Exception e) 
     { 
     } 

JSP代碼

function values() 
{ 
    var values= 
    { 
     url:"metaData.do?actionMethod=loadMasterData", 
     handleAs:'json', 
     content:parameter, 
     load: function(response) 
     { 

     alert("working"); 

     }, 
     error: function(data) 
     { 
      alert("Error occured while fetching data"); 
     }, 
     timeout: 3000, 
     sync: true        
    }; 
    dojo.xhrPost(values); 
} 

是我沒有得到來自行動在JSP正確的響應,因此錯誤警報popsup問題錯誤而獲取數據發生

+0

控制檯是否提供有關錯誤的其他信息? (在旁註中,爲什麼使用純js進行ajax操作?這真的很麻煩。) – alkis

+1

在Action Class中找不到任何錯誤。但在JSP中,它會提示一個對象錯誤。 – sTg

+0

哦,你正在使用dojo。沒關係附註。所以這是服務器端的錯誤?嘗試打印堆棧跟蹤。 – alkis

回答

1

我沒有找到任何issu使用從Action返回到JSP的JSONArray對象。試圖通過

out.println(masterObject.toString); 

返還JSONArrayObject如果還是這是行不通的 感覺好像是越來越從Action轉移到JSP一些垃圾數據。嘗試debuggingPrinting您的操作方法中的System.out.println可能會讓您知道從Action轉移到JSP的JSONArrayObject中的數據。 如果仍然有問題? 。如果你正在使用像Struts/Springs這樣的框架(你應該提到),檢查控制是否傳遞給你的控制器類,如果控制沒有通過。從控件通過的地方(,例如Struts 2的Struts.xml),您的XML文件應該存在與Action類相關的問題。

+1

你是天才。感謝所有可能的步驟來跟蹤問題。 Struts-Config.xml中爲Action類提到的Path有一個問題。我糾正了它,現在我能夠在JSP頁面中打印JSONArrayObjects的對象。 – sTg