Spring MVC处理程序返回带有额外引号的String

mkv*_*cvc 10 spring-mvc

我正在使用Spring 3.1,我有一个应该返回String值的处理程序.这是我的处理程序的样子:

@RequestMapping(value = TEST_HANDLER_PATH, method = RequestMethod.POST)
public ResponseEntity<String> handleTest(HttpServletRequest request,
    @RequestParam("parma1") String param) throws Exception {
    String ret = ...
    ...
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "text/plain;charset=utf-8");
    return new ResponseEntity<String>(ret, headers, HttpStatus.CREATED);
}
Run Code Online (Sandbox Code Playgroud)

我也试过注释方法与@ResponseBodyreturn ret;在最后.

在这两种情况下,当我点击服务时,我会获得围绕String值的额外引号(例如"This is a test").我猜这是由于邮件转换.这就是为什么我尝试定义Content-Type标头,明确地命中StringHttpMessageConverter,无济于事.

Mat*_*rne 16

有同样的问题.

只要确保你注册一个org.springframework.http.converter.StringHttpMessageConverter和你的杰克逊一样,以便字面意思对字符串进行处理,而不是试图转换为JSON(带有额外的引号).

只需使用您首选的Charset实例化默认构造函数或构造函数.应使用标准内部默认值为您设置媒体类型.如果您通过代码扩展WebMvcConfigurerAdapter进行配置,那么只需在configureMessageConverters(List<HttpMessageConverter<?>> converters)方法中添加转换器即可.

  • 这对我有用.在任何其他转换器之前,必须将`StringHttpMessageConverter`添加到`List <HttpMessageConverter <?>>`.当您明确配置它们时,顺序很重要 (3认同)
  • 谢谢你们俩。顺序很重要。如果您使用的是 `extendMessageConverters`,则需要将 `StringHttpMessageConverter` 显式添加到索引 0。 (2认同)

mkv*_*cvc -1

事实证明,其中一个导入中注册了一个 JSON 消息转换器。

  • 您是否删除了 JSON 消息转换器?如果您不想删除消息转换器怎么办? (2认同)