Ответ 1
В Spring 3.2.x есть больше, чем только те 3. См. документы на веб-сайте Spring. Ласты Spring (4.2.x) документация.
Ниже приведены поддерживаемые типы возвращаемых значений:
- Объект ModelAndView с моделью, неявно обогащенной объектами команд и результатами
@ModelAttribute
методов доступа к аннотированным ссылочным данным. - Объект Модель, при этом имя вида неявно определяется через RequestToViewNameTranslator и модель, неявно обогащенную командами, и результаты
@ModelAttribute
методов доступа к аннотированным ссылочным данным. - Объект Карта для отображения модели с именем вида, неявно определяемым через RequestToViewNameTranslator, и модель, неявно обогащенная командами, и результаты
@ModelAttribute
методов доступа к аннотированным ссылочным данным. li > - Объект Вид, при этом модель неявно определяется с помощью объектов команд и
@ModelAttribute
методов доступа к аннотированным ссылочным данным. Метод обработчика также может программно обогатить модель, объявив аргумент модели (см. Выше). - Значение String, которое интерпретируется как имя логического представления, с моделью, неявно определяемой с помощью объектов команд и
@ModelAttribute
методов доступа к аннотированным ссылочным данным. Метод обработчика также может программно обогатить модель, объявив аргумент модели (см. Выше). - void, если метод обрабатывает сам ответ (путем непосредственного написания содержимого ответа, объявления аргумента типа ServletResponse/HttpServletResponse для этой цели) или если имя представления предполагается неявным образом определить через RequestToViewNameTranslator (не объявление аргумента ответа в сигнатуре метода обработчика).
- Если метод аннотируется с помощью @ResponseBody, возвращаемый тип записывается в тело ответа ответа. Возвращаемое значение будет преобразовано в тип аргумента объявленного метода с использованием HttpMessageConverters. См. Раздел "Сопоставление тела ответа с аннотацией
@ResponseBody
". - Объект HttpEntity ** или ** ResponseEntity, чтобы обеспечить доступ к HTTP-заголовкам и содержимому ответа на сервлет. Тело объекта будет преобразовано в поток ответов с использованием HttpMessageConverters. См. Раздел "Использование HttpEntity".
- A Callable может быть возвращен, когда приложение хочет получить возвращаемое значение асинхронно в потоке, управляемом Spring MVC.
- A DeferredResult может быть возвращен, когда приложение хочет получить возвращаемое значение из потока по своему выбору.
- Любой другой тип возвращаемого значения считается единственным атрибутом модели, который должен быть открыт для представления, используя имя атрибута, указанное через
@ModelAttribute
на уровне метода (или имя атрибута по умолчанию, основанное на имени класса типа возврата). Модель неявно обогащена командами и результатами@ModelAttribute
методов доступа к аннотированным ссылочным данным.