2013-11-11 2 views
1

У меня есть класс объектов GroupStudent, Spring Controller и JSP с функцией ajax. В контроллере я пытаюсь передать объект GroupStudent объекта на страницу JSP с помощью @ResponseBody. Но я всегда получаю ошибку от браузера: Error [object Object]. Я узнал, что мне нужно добавить в папку lib в проектах jackson-core-asl и jackson-mapper-asl jars. Я добавил их (версия 1.9.7) и поместил в spring-servlet.xml, чтобы он автоматически мог преобразовать объект GroupStudent в формат json и передать его обратно в функцию ajax. Но это не помогло, и у меня всегда есть одинаковое диалоговое окно ошибок в браузере. Если кто-то знает, как я могу передать объект объекта в ajax с помощью @ResponseBody, я буду очень благодарен за помощь.Ошибка Spring MVC @ResponseBody

спасибо.

класс GroupStudent

@Entity 
@Table(name = "GroupStudent") 
@NamedQueries({ 
@NamedQuery(name = "GroupStudent.getAllGroups", // get all groups 
      query = "select g from GroupStudent g"), 
@NamedQuery(name = "GroupStudent.getGroupByName", // get group by name 
      query = "select g from GroupStudent g where g.groupStudentNumber = :name") 
}) 
public class GroupStudent implements Serializable { 
public GroupStudent() {} 

public GroupStudent(String groupStudentNumber) { 
    this.groupStudentNumber = groupStudentNumber; 
} 

// create connectivity with table Student 
private Set<Student> students = new HashSet<Student>(); 

@OneToMany(mappedBy = "groupStudent", cascade = CascadeType.ALL, orphanRemoval = true) 
public Set<Student> getStudents() { 
    return this.students; 
} 

public void setStudents(Set<Student> students) { 
    this.students = students; 
} 

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "group_id_seq") 
@SequenceGenerator(name = "group_id_seq", sequenceName = "GroupStudent_seq", allocationSize = 1) 
@Column(name = "GroupStudentId") 
public Long getGroupStudentId() { 
    return this.groupStudentId; 
} 

public void setGroupStudentId(Long groupStudentId) { 
    this.groupStudentId = groupStudentId; 
} 

@Column(name = "GroupStudentNumber") 
public String getGroupStudentNumber() { 
    return this.groupStudentNumber; 
} 

public void setGroupStudentNumber(String groupStudentNumber) { 
    this.groupStudentNumber = groupStudentNumber; 
} 

// table GroupStudent fields 
private Long groupStudentId; 
private String groupStudentNumber; 

}

функция контроллера

@RequestMapping(value = "/addData.html", method = RequestMethod.POST) 
public @ResponseBody GroupStudent addNewGroup(@RequestBody GroupStudent group) { 

    return group; 
} 

}

Ajax

function addGroupAjax() { 
      var groupStudentNumber = $('#groupStudentNumber').val(); 

      $.ajax({ 
       type: "POST", 
       url: "/IRSystem/addData.html", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       mimeType: "application/json", 
       data: "{\"groupStudentNumber\":" + "\"" + groupStudentNumber + "\"}", 
       success: function(response) { 

       }, 
       error: function(e) { 
        alert("Error" + e); 
       } 
      }); 
     } 
+0

Загрузите и установите плагин firebug и используйте его, чтобы узнать, что делает ваш запрос, и полученный вами ответ, а затем проверьте свой сервер на наличие ошибок. –

ответ

0

Вы можете попытаться добавить produces="application/json" к своему @RequestMapping, чтобы он выглядел как @RequestMapping(value = "/addData.html", method = RequestMethod.POST, produces="application/json").

Кроме того, я не видел его в первую очередь, вам не хватает аннотации @ResponseBody на вашем методе POST. В этом блоге http://www.javacodegeeks.com/2013/07/spring-mvc-requestbody-and-responsebody-demystified.html вы можете видеть, что он делает. Короткий ответ: он помогает вам сериализовать/десериализоваться и записывает ваш сериализованный объект непосредственно в поток ответов, поэтому вам не нужно делать это вручную.

Кроме того, проверьте свой журнал на сервере, чтобы узнать, есть ли какие-либо ошибки, если нет (если вы используете Chrome), откройте «Настройки» -> «Инструменты» -> Инструменты разработчика -> Сеть и снова вызовите свой вызов. Выделите элемент из списка, который показывает ваш вызов, и там вы можете точно увидеть, какой сервер вернул вас.

+0

Это не помогло – Vlad

Смежные вопросы