我知道可以使用@JsonView(...)静态定义Spring MVC中的单个视图类来注释控制器方法.不幸的是,这意味着我可能需要为每种类型的视图提供不同的端点.
我看到其他人之前已经问过这件事.虽然这种方法可行,但Spring通常有很多方法可以做同样的事情.如果您对某些内部结构有一些了解,有时候解决方案可能比最初出现的要简单得多.
我想拥有一个可以根据当前主体动态选择适当视图的控制器端点.我是否可以Model使用包含相应视图类或可能MappingJacksonValue直接实例的属性返回?
我看到org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter#writeInternal有一段代码可以确定要使用的视图:
if (value instanceof MappingJacksonValue) {
MappingJacksonValue container = (MappingJacksonValue) object;
value = container.getValue();
serializationView = container.getSerializationView();
}
Run Code Online (Sandbox Code Playgroud)
这似乎来自org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice#beforeBodyWriteInternal但我无法解决,如果有一种方法可以绕过这只是简单地返回一个包含必要信息的特定值Jackson2HttpMessageConverter来选择正确的视图.
任何帮助非常感谢.