2014-12-03 4 views
1

Я пытаюсь получить текст ответа с сервера Java с помощью метода getJSON jQuery. Хотя, я могу получить данные ответа, когда класс java - это простой формат (String, List и Map), я не смог получить данные успеха при использовании другого java-объекта.Получение объекта JSON из Java в Struts 2

следующий класс Java является простой тип и получить данные успешного доступа и работы

package com.awitd.framework.action; 

import com.opensymphony.xwork2.Action; 

public class getAllJson implements Action{ 

private String data; 

public String getData() { 
    return data; 
} 

public void setData(String data) { 
    this.data = data; 
} 

public String execute() { 
    System.out.println(" this is from action"); 
    data = "["; 
      data += "{"; 
      data += "\"objid\":\"" + "1" + "\","; 
      data += "\"id\":\"" + "1" + "\",\"name\":\"" + "name" + "\""; 
      data += "}"; System.out.println("data " + data); 

    data += "]"; 

    return SUCCESS; 
} 


} 

следующий класс Java использует другой объект Java и не возвращает данные успеха

package com.awitd.framework.action; 

import java.util.List; 

import com.opensymphony.xwork2.Action; 
import com.awitd.framework.entity.Employee; 
import com.awitd.framework.entity.Profile; 
import com.awitd.framework.service.EmployeeService; 
public class getAllJson implements Action{ 

private String data; 

private EmployeeService employeeService; 



private List<Employee> employeeList; 
private Employee employee; 
private Profile profile; 
public String getData() { 
    return data; 
} 

public void setData(String data) { 
    this.data = data; 
} 

public EmployeeService getEmployeeService() { 
    return employeeService; 
} 

public void setEmployeeService(EmployeeService employeeService) { 
    this.employeeService = employeeService; 
} 

public String execute() { 
    System.out.println(" this is from action"); 
    data = "["; 
      /*data += "{"; 
      data += "\"objid\":\"" + "1" + "\","; 
      data += "\"id\":\"" + "1" + "\",\"name\":\"" + "name" + "\""; 
      data += "}"; System.out.println("data " + data);*/ 



    employeeList = employeeService.getAll();  
    System.out.println("size........"+employeeList.size()); 
    if (!employeeList.isEmpty()) { 
     for (int i=0; i<employeeList.size(); i++) { 
      employee = employeeList.get(i); 
      profile = employee.getProfile(); 
      data += "{"; 
      data += "\"objid\":\"" + employee.getEmployeeId() + "\","; 
      data += "\"id\":\"" + employee.getId() + "\",\"name\":\"" + employee.getName() + "\""; 
      data += ",\"dob\":\"" + profile.getDob() + "\",\"sex\":\"" + profile.getSex() + "\""; 
      data += ",\"email\":\"" + profile.getEmail() + "\",\"workstart\":\"" + profile.getWorkstart() + "\""; 
      data += ",\"study\":\"" + profile.getStudySub() + "\",\"jplevel\":\"" + profile.getJpLevel() + "\""; 
      data += ",\"jpgroup\":\"" + profile.getJpGroup() + "\",\"remark\":\"" + profile.getRemark() + "\""; 
      data += "}"; 
      if (!(i==employeeList.size()-1)) 
       data += ","; 
     } 
    } 
    data += "]"; 




    return SUCCESS; 
} 


} 

получили это ошибка:

No existing transaction found for transaction marked with propagation 'mandatory' 

java.lang.reflect.InvocationTargetException  
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: 
org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException 
org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:246) 
org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178) 
org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168) 
org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) 
org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102) 
org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116) 
org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:196) 
org.apache.struts2.json.JSONResult.execute(JSONResult.java:170) 
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:367) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:271) 
+0

InvocationTargetException - это всего лишь слой абстракции над реальной ошибкой. Пожалуйста, найдите реальную ошибку в stacktrace (вызванную ...) и разместите ее здесь –

ответ

1

Пробуйте следующий код, он должен исправить ошибку

data += "{"; 
data += "\"objid\":\"" + employee.getEmployeeId() + "\","; 
data += "\"id\":\"" + employee.getId() + "\",\"name\":\"" + employee.getName() + "\","; 
data += ",\"dob\":\"" + profile.getDob() + "\",\"sex\":\"" + profile.getSex() + "\","; 
data += ",\"email\":\"" + profile.getEmail() + "\",\"workstart\":\"" + profile.getWorkstart() + "\","; 
data += ",\"study\":\"" + profile.getStudySub() + "\",\"jplevel\":\"" + profile.getJpLevel() + "\","; 
data += ",\"jpgroup\":\"" + profile.getJpGroup() + "\",\"remark\":\"" + profile.getRemark() + "\""; 
data += "}"; 
+0

Я даже не могу использовать «EmployeeService employeeService». Я попробовал, используя простой запрос, который был в порядке !. Поэтому я думаю, что JSON-писатель не может использовать служебный сервис для объекта типа JSON. –

+0

Вы не должны использовать json result для сериализации 'employeeService'. Посмотрите, как исключить свойства из процесса [здесь] (http://stackoverflow.com/a/21350079/573032). –