我想通过使用JavaConfig(Spring MVC 4.0)在我现有的应用程序中使用JSON(杰克逊库)
我有我的配置:
@Configuration
@EnableWebMvc
@ComponentScan({ "my.package.controller" })
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Bean(name = "viewResolver")
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
我想应用JSON配置,但是找不到解决方案。
我认为我必须扩展WebMvcConfigurerAdapter。还有一个细节,我使用Spring Security。
你可以帮帮我吗 ?
谢谢
试试这个:
@Bean
public ViewResolver contentNegotiatingViewResolver(
ContentNegotiationManager manager) {
List< ViewResolver > resolvers = new ArrayList< ViewResolver >();
InternalResourceViewResolver r1 = new InternalResourceViewResolver();
r1.setPrefix("/WEB-INF/pages/");
r1.setSuffix(".jsp");
r1.setViewClass(JstlView.class);
resolvers.add(r1);
JsonViewResolver r2 = new JsonViewResolver();
resolvers.add(r2);
ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
resolver.setViewResolvers(resolvers);
resolver.setContentNegotiationManager(manager);
return resolver;
}
要添加Jackson支持,应使用MappingJacksonJsonView或MappingJackson2JsonView
public class JsonViewResolver implements ViewResolver {
public View resolveViewName(String viewName, Locale locale) throws Exception {
MappingJacksonJsonView view = new MappingJacksonJsonView();
view.setPrettyPrint(true);
return view;
}
}
在application.xml中,只是为了澄清我的示例具有此配置
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
因此,可能需要在@Bean方法中将mediaTypes添加到ContentNegotiatingViewResolver。
检查此内容有关ContentNegotiation的更多信息
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句