Как настроить конечную точку в Spring для приема данных формы и тела запроса XML? - PullRequest
2 голосов
/ 26 ноября 2010

У меня небольшой вопрос относительно возможностей привязки данных Spring MVC. У меня есть следующий класс контроллера:


@Controller
@RequestMapping("/foo")
public class FooController() {

    // … some init stuff //

@RequestMapping(value = "/{id}/edit.{format}", method = RequestMethod.POST)
    public ModelAndView editFoo(@RequestBody FooItem foo, @PathVariable("format") String format) {

        // some code here to edit the FooItem //
    }
}

Я хочу иметь возможность публиковать данные форм, а также XML для этого метода. Чтобы это работало, я добавил два конвертера сообщений в мой applicationContext.xml: стандартный formHttpMessageConverter и маршаллер XStream.

Это нормально работает, но у меня проблема: если я использую @RequestBody и отправляю данные формы по URL-адресу, сервер отвечает 415 Ошибка. Если я удаляю эту аннотацию, данные формы работают хорошо, и Spring создает объект для меня, но если я размещаю XML против него, я получаю пустой объект.

Есть ли способ обойти это или мне нужно иметь 2 метода для обработки обоих входящих форматов?

Заранее спасибо!

1 Ответ

2 голосов
/ 26 ноября 2010

Я думаю, вам нужны два метода.

FormHttpMessageConverter не имеет тех же возможностей привязки данных, которые предоставляет @ModelAttribute, он не может связать запрос с указанным целевым классом, только с MultiValueMap(см. Javadoc ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...