我正在使用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)
我也试过注释方法与@ResponseBody用return ret;在最后.
在这两种情况下,当我点击服务时,我会获得围绕String值的额外引号(例如"This is a test").我猜这是由于邮件转换.这就是为什么我尝试定义Content-Type标头,明确地命中StringHttpMessageConverter,无济于事.
Mat*_*rne 16
有同样的问题.
只要确保你注册一个org.springframework.http.converter.StringHttpMessageConverter和你的杰克逊一样,以便字面意思对字符串进行处理,而不是试图转换为JSON(带有额外的引号).
只需使用您首选的Charset实例化默认构造函数或构造函数.应使用标准内部默认值为您设置媒体类型.如果您通过代码扩展WebMvcConfigurerAdapter进行配置,那么只需在configureMessageConverters(List<HttpMessageConverter<?>> converters)方法中添加转换器即可.