何时/何地是确定Spring中不支持的媒体类型的理想选择?

时间:2011-02-03 17:16:03

标签: java spring rest spring-mvc

所以,我有一个Spring MVC应用程序,我想要一种方法来确定资源何时不支持特定的媒体类型。我正在考虑使用自定义View Resolvers执行此操作...如果视图解析器都没有找到视图名称的成功匹配,则抛出异常,触发不支持的媒体类型(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 个答案:

答案 0 :(得分:1)

您可以使用ContentNegotiatingViewResolver获得大部分内容,但如果您希望它根据缺少特定视图模板的不同行为,则必须延长InternalResourceViewResolver

答案 1 :(得分:0)

您还可以使用@RequestHeader注释来定义方法支持的媒体类型。