在 Spring MVC 中,@ResponseBody 注解在确定响应的内容类型方面起着至关重要的作用发送回客户端。当以灵活的方式返回自定义响应(例如 JSON 或纯文本)时,此注释非常有用。
在您的情况下,您遇到了控制器方法的响应被设置为错误的问题内容编码。这是由于 Spring MVC 的默认行为造成的,如果没有为返回值找到合适的转换器,它会回退到 ISO-8859-1 编码。
要解决此问题并设置正确的编码内容类型,您可以利用 @ResponseBody 注释的 Produces 属性。此属性允许您指定控制器方法可以生成的媒体类型(即内容类型)。
对于您的特定情况,您希望控制器方法以 UTF-8 编码生成纯文本。以下是实现此目的的方法:
<code class="java">@RequestMapping(value = "ajax/gethelp") @ResponseBody public String handleGetHelp(Locale loc, String code) { log.debug("Getting help for code: " + code); String help = messageSource.getMessage(code, null, loc); log.debug("Help is: " + help); return help; }</code>
通过将 Produces = "text/plain; charset=utf-8" 添加到 @ResponseBody 注释,您可以指示 Spring MVC 显式设置对字符集为 utf-8 的 text/plain 的响应。这应该确保响应被正确编码并在客户端正确显示。
注意,@RequestMapping 注解还支持 Produces 属性,该属性可用于控制相应请求映射可以的媒体类型手柄。
以上是如何在 Spring MVC 中使用 @ResponseBody 控制响应的内容类型?的详细内容。更多信息请关注PHP中文网其他相关文章!