我知道可以注释控制器方法以@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();
}
这似乎来自org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice#beforeBodyWriteInternal
但我无法确定是否有一种方法可以绕过它,只需返回一个包含Jackson2HttpMessageConverter
选择正确视图所需信息的特定值。
非常感谢任何帮助。