2013-12-23 49 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