ホームページ >Java >&#&チュートリアル >Spring MVC の @ResponseBody でコンテンツ タイプの不一致を解決するにはどうすればよいですか?
Spring MVC の @ResponseBody による Content-Type の不一致の解決
Spring MVC アプリケーションで、コントローラー メソッドが String を返し、次の注釈が付けられている場合@ResponseBody、フレームワークは応答のコンテンツタイプを設定する責任があります。デフォルトでは、UTF-8 エンコーディングの「text/plain」が使用されます。
Content-Type のカスタマイズ
デフォルトの Content-Type をオーバーライドするには、以下を含めることができます。 Spring アプリケーションの次の構成:
<code class="xml"><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" /> </bean> </list> </property> </bean></code>
これにより、@ResponseBody メソッドから返される文字列が指定されたコンテンツ タイプを使用するようになります。ただし、このアプローチは常に効果的であるとは限りません。
Produces 属性の使用
Spring 3.1 では、RequestMapping アノテーションにプロデュース属性が導入されています。プロデュース = "application/json; charset=utf-8" を指定すると、応答のコンテンツ タイプを明示的に設定できます。
サンプル コントローラー:
<code class="java">@RequestMapping(value = "/getDealers", method = RequestMethod.GET, produces = "application/json; charset=utf-8") @ResponseBody public String sendMobileData() { return "..."; }</code>
このアプローチでは、デフォルトのコンテンツタイプの動作をオーバーライドし、応答に正しいエンコーディングが含まれていることを確認するための属性を生成します。
以上がSpring MVC の @ResponseBody でコンテンツ タイプの不一致を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。