Класс элемента синтаксического анализа Spring MVC 3.0 в JSON

У меня есть класс с именем Person, и он выглядит так.

public class Person{
public Person(){}

private Long id;
private String firstName;
private String lastName;
private Supervisor supervisor;

//setters and getters
}

public class Supervisor{
public Supervisor(){}
private Long id;
private String firstName;
private String lastName;

//setters and getters
}

Теперь у меня есть HTML-форма, в которой есть входные данные для элементов пользователя и руководителя (имя, фамилия и т. д.). На стороне сервера у меня есть контроллер Spring MVC, и я делаю следующее:

 @RequestMapping(value="/getperson.do",method = RequestMethod.POST)
         @ResponseBody
          public String getPersonByAjax(@RequestBody Person person){ 

          }

Будет ли мой суперпользователь анализироваться как элемент внутри класса Person?

Как должна выглядеть моя строка JSON?

Могу ли я добиться этого с помощью JQuery или мне нужно создать строку JSON вручную?


person danny.lesnik    schedule 09.11.2010    source источник
comment
У вас опечатка в коде. Для начала SuperVisor должен быть Supervisor.   -  person Martijn Verburg    schedule 09.11.2010
comment
Конечно, я просто набрал этот код в текстовом виде. Спасибо.   -  person danny.lesnik    schedule 09.11.2010
comment
Кроме того, ваш Будет ли мой суперпользователь анализироваться как личный элемент? должно быть Будет ли мой руководитель анализироваться как персональный элемент?   -  person Martijn Verburg    schedule 09.11.2010
comment
@Божо, еще нет, потому что мне просто интересно, как должен выглядеть ny JSON.   -  person danny.lesnik    schedule 09.11.2010
comment
@karianna - Прости. Я просто неправильно описал. Я могу обвинить это в шуме рядом с моим кубиком :)   -  person danny.lesnik    schedule 09.11.2010


Ответы (2)


Ваше сообщение JSON должно выглядеть следующим образом:

{
    "id": ...,
    "firstName": ...,
    "lastName": ...,
    "supervisor": {
        "id": ...,
        "firstName": ...,
        "lastName": ...    
    }
}

jQuery не может автоматически сериализовать форму в это представление, поэтому вам потребуется некоторая ручная обработка.

person axtavt    schedule 09.11.2010
comment
Спасибо, это именно то, что я хотел знать. - person danny.lesnik; 09.11.2010

Я думаю, вы могли бы захотеть, чтобы супервизор расширил Person?

Или даже измените Person на интерфейс и попросите Supervisor реализовать этот интерфейс и добавить новый класс Employee для представления Person, у которого есть Supervisor.

Я бы разрешил эту структуру, чтобы ваш getPersonByAjax принимал все типы лиц.

Затем вы можете начать беспокоиться о своем JSON.

person Martijn Verburg    schedule 09.11.2010
comment
Нет, я предпочитаю не делать этого. Человек и Супервайзер — совершенно разные сущности. Я хотел бы сохранить это таким образом. - person danny.lesnik; 09.11.2010
comment
В этом случае вы не сможете разобрать Supervisor как человека. Они совершенно не связаны в вашей модели мира. - person Martijn Verburg; 09.11.2010