【发布时间】:2015-11-26 10:56:02
【问题描述】:
我正在配置我的 Spring 项目以添加 JSON 前缀 )]}',\n 以克服常见漏洞。我尝试按照this link 进行配置,它在启动服务器时导致异常。请帮我解决这个问题。
@Configuration
@EnableWebMvc
public Class WebAppConfig extends WebMvcConfigurationSupport
{
public void addPrefixJSON()
{
List<HttpMessageConverter<?>> converters = super.getMessageConverters();
MappingJackson2HttpMessageConverter convert = new MappingJackson2HttpMessageConverter();
convert.setPrefixJson(true);
converters.add(convert);
}
}
我得到了以下异常,
08:01:23,435 ERROR [org.springframework.web.context.ContextLoader]
(ServerService Thread Pool -- 68) Context initialization failed:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource
[org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Instantiation of bean failed; nested exception is
org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerMapping()] threw exception; nested exception is
java.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$6af53d42 cannot be cast to
org.springframework.web.accept.ContentNegotiationManager
我在我的 spring-servlet.xml 中包含了<mvc:annotation-driven /> 我们是否有任何其他手动方法可以在旧版本的 Jackson 中添加前缀,比如 Jackson 1.6?
更新:
Jackson 2.0 解决了这个问题,我可以在浏览器中查看前缀,但是我看不到 angular end 的输出。
我的配置是这样的:
<mvc:annotation-driven content-negotiation-manager="contentManager">
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="jsonPrefix" value=")]}',\n" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
JSON 输出为
)]}',\n"{\"userName\":\"ABC\",\"emailId\":\"ABC@gmail.com\"}"
我对此输出感到困惑,此外 Angular 无法识别输出并且无法从该对象读取值。任何帮助都会非常有用。提前致谢。
【问题讨论】:
-
此外,请帮助我了解如何在将其添加到 JSON 响应后验证此前缀。
标签: java json angularjs spring spring-mvc