Java 在Spring中,何时/何地确定不受支持的介质类型最为理想?

Java 在Spring中,何时/何地确定不受支持的介质类型最为理想?,java,spring,rest,spring-mvc,Java,Spring,Rest,Spring Mvc,所以,我有一个SpringMVC应用程序,我想要一种确定资源何时不支持特定媒体类型的方法。我正在考虑使用自定义视图解析程序执行此操作。。。如果没有任何视图解析程序找到与视图名称成功匹配的,则引发异常,触发不支持的媒体类型(HTTP代码为406) 这很有意义,因为大多数视图解析程序如果无法解析给定的视图名称,将返回null。问题出现在像InternalResourceViewResolver这样的视图解析程序中,它总是返回一个视图,即使给定的视图名称不存在 作为参考,以下是我的控制器的外观: @R

所以,我有一个SpringMVC应用程序,我想要一种确定资源何时不支持特定媒体类型的方法。我正在考虑使用自定义视图解析程序执行此操作。。。如果没有任何视图解析程序找到与视图名称成功匹配的,则引发异常,触发不支持的媒体类型(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);
}
@RequestMapping(value=“/viewTest”,method=RequestMethod.GET)
公共模型和视图getViewData(){
Map myModel=newhashmap();
myModel.put(“现在”,“新日期()).toString());
返回新模型和视图(“foo”、“model”、myModel);
}

谢谢

您可以通过,尽管听起来您必须扩展
InternalResourceViewResolver
,如果您希望它根据特定视图模板的缺失而表现不同。

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

@RequestHeader
用于将控制器方法参数绑定到某个HTTP头。您无法使用此批注控制支持的媒体类型。您的意思是
@RequestMapping(…,products=MediaType.APPLICATION\u JSON\u VALUE)