ホームページ >Java >&#&チュートリアル >Spring MVC の @ResponseBody でコンテンツ タイプの不一致を解決するにはどうすればよいですか?

Spring MVC の @ResponseBody でコンテンツ タイプの不一致を解決するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-30 01:26:28873ブラウズ

How to Resolve Content-Type Discrepancies with Spring MVC's @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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。