【发布时间】:2015-05-06 20:38:17
【问题描述】:
我知道可以使用 @JsonView(...) 注释控制器方法以在 Spring MVC 中静态定义单个视图类。不幸的是,这意味着我需要为我可能拥有的每种视图类型使用不同的端点。
我看到其他人问过这个before。虽然这种方法可能有效,但 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 选择正确视图所需信息的特定值.
非常感谢任何帮助。
【问题讨论】:
-
也可以配置一个ContentNegotiatingViewResolver
标签: spring-mvc json-view