2013-11-10 4 views
0

В JSP файл у меня есть поле для ввода группы студента, а затем передать эти данные в классе объекта GroupStudent (без методов получения и установки)Spring MVC и AJAX ошибка

@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; 
} 
// table GroupStudent fields 
private Long groupStudentId; 
private String groupStudentNumber; 
} 

JSP

<label>Group</label> 
<input id="groupStudentNumber"/> 
<input type="submit" value="Add" onclick="addGroupAjax()" /> 

и ajax для передачи данных контроллеру пружины

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

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

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

, но он не передает данные контроллеру. Поле объекта пусто.

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

    System.out.println("Entered group: " + group.getGroupStudentNumber()); 

    return new Student(); 
} 

и еще одно, что я не могу передать сущность Студент в ajax тоже. Я добавил в пружинные банки

jackson-core-asl-1.7.1 и jackson-mapper-asl-1.7.1, чтобы иметь возможность передать объект объекта в ajax. Но это не дало результата. Когда я пытаюсь передать данные (в ajax) в Google Chrome, у меня есть окно с ошибкой Error [object Object]. Я не знаю, почему это происходит. Буду признателен за любую информацию, спасибо.

+0

Показать, что класс 'GroupStudent' выглядит. –

+0

Изменить url в ajax вызов функции url: "addData.html" Я имею в виду remove/IRSystem/ – jdev

+0

Я добавил класс GroupStudent. – Vlad

ответ

0

Ваш контроллер настроен неправильно, чтобы принять сообщение. Если вы публикуете тело JSON, вам нужно использовать @RequestBody аннотацию для параметра метода, например:

@RequestMapping(value = "/addData.html", method = RequestMethod.POST) 
public @ResponseBody Student addNewGroup(@RequestBody GroupStudent group) { 
    System.out.println("Entered group: " + group.getGroupStudentNumber()); 
    return new Student(); 
} 

Таким образом, ваш JSON будет отображен непосредственно на ваш GroupStudent объекта.

+0

Вы правы, это была моя ошибка, я читал об этом, но забыл изменить. Но все же у меня есть ошибка Error [object Object] из браузера, когда я пытаюсь передать данные с ajax на контроллер или с контроллера на ajax (если я передаю данные в ajax без какого-либо параметра @RequestBody). – Vlad

0

Вам также необходимо указать тип расходных материалов, добавив потребляемые средства = MediaType.APPLICATION_JSON_VALUE, производит = MediaType.APPLICATION_JSON_VALUE в ваше @RequestMapping.