Когда и где идеально определить неподдерживаемый тип носителя весной? - PullRequest
0 голосов
/ 03 февраля 2011

Итак, у меня есть приложение Spring MVC, и я хочу, чтобы определить, когда ресурс не поддерживает определенный тип носителя. Я думал о том, чтобы сделать это с помощью пользовательских преобразователей представлений ... Если ни один из преобразователей представлений не обнаружил успешного совпадения с именем представления, то выдается исключение, вызывающее неподдерживаемый тип носителя (код HTTP 406).

Это в основном имеет смысл, потому что большинство распознавателей вернет null, если не сможет разрешить данное имя представления. Проблема возникает с определителями вида, такими как InternalResourceViewResolver, которые ВСЕГДА возвращают представление, даже если данное имя представления не существует.

В качестве примера вот как выглядят мои контроллеры:

@RequestMapping(value = "/viewTest", method = RequestMethod.GET)
public ModelAndView getViewData() {

    Map<String, Object> myModel = new HashMap<String, Object>();
    myModel.put("rightNow", (new Date()).toString());

    return new ModelAndView("foo", "model", myModel);
}

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Вы можете получить большую часть этого с ContentNegotiatingViewResolver , хотя звучит так, что вам придется расширять InternalResourceViewResolver, если вы хотите, чтобы он вел себя по-разному в зависимости от отсутствия конкретного шаблона представления.

0 голосов
/ 04 февраля 2011

Вы также можете использовать аннотацию @RequestHeader, чтобы определить, какие типы носителей поддерживаются вашим методом.

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