【发布时间】:2017-04-22 07:28:20
【问题描述】:
我现在正在研究 Spring Controller 层的实际工作方式。如果我想要一个返回模型和视图名称(例如 HTML 文件名)的控制器,我只需扩展 AbstractController 类,然后实现一个 handleRequestInternal 方法,将该控制器注册为 bean,并在我的 HandlerMapping(例如 SimpleUrlHandlerMapping)中设置什么路径映射到什么控制器。
但这迫使我返回视图名称。
如果我不想指定视图名称,只返回字符串(例如格式化的 json 或纯文本)或对象以显示与 @RestController 显示相同,该怎么办?
编辑。
或者换句话说。我应该使用什么视图层 bean 来省略视图名称和显示模型,就像 json/xml/纯文本一样?
回答。
我找不到 Spring 提供的任何 JSON 视图 bean。
我做的解决方法是创建自己的JSONViewResolver,将其注册为bean,然后在控制器中指定我想要的视图。
public class JsonViewResolver implements ViewResolver {
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
MappingJackson2JsonView mappingJackson2JsonView = new MappingJackson2JsonView();
mappingJackson2JsonView.setPrettyPrint(true);
return mappingJackson2JsonView;
}
}
【问题讨论】:
标签: spring rest spring-mvc spring-restcontroller spring-rest