2011-06-20 10 views
2

私は<mvc:annotation-driven />スプリング(3.0)構成(ContentNegotiatingViewResolverなし)を使用しています。 documentationによると、Spring 3はJSONとXMLをサポートしています。以下のようなハンドラメソッドで@ResponseBodyを使用すると、JSONレスポンスが得られます。どのようにXMLやJSONを取得するための応答を制御するには?Spring 3:@ResponseBody - XMLまたはJSONを取得するためのレスポンスを制御する方法は?

@RequestMapping("/data") 
public @ResponseBody User getUser() { 
    return new User(); 
} 

EDIT Mavenの依存関係を使用し

<!-- xml --> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.1.8</version> 
</dependency> 

<!-- json --> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.8.1</version> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.8.1</version> 
</dependency> 

デバッグAnnotationDrivenBeanDefinitionParser => jaxb2Present = TRUE、jacksonPresent =真

+1

をRequestMappingで構成されていますあなたは、要求 –

+0

にどのようにそれをするように指定する必要がありますか? – marioosh

+0

Spring SVNのmvc-ajaxサンプルを見てください。https://src.springframework.org/svn/spring-samples/mvc-ajax/trunk/ – Random

答えて

4

スプリングは、要求の "同意" ヘッダを使用しJSONまたはXMLを送信するかどうかを決定します。両方が受け入れられれば、あなたはどちらかを得るでしょう、私は最初にチェックされることを覚えていません。

XMLを取得するには、クライアントに "application/json"ではなく "application/xml"がヘッダーに含まれている必要があります。

+1

同じ問題が発生していますが、Acceptヘッダーが機能していません... –

0

@ResponseBodyをこのように使用してください。以下のメソッドは、JSONをリクエストパラメータとして受け取り、JSONレスポンスを返します。

@RequestMapping(value = "...", method = RequestMethod.POST) 
@ResponseBody 
public Object RestPOSTService(@RequestBody JsonContent content, 
     HttpServletRequest request) throws Exception { 
     ..... 
    return (JSON); 
} 
0

それは

@RequestMapping(
value = "...", 
method = {RequestMethod.POST},produces ="application/json") 
public @ResponseBody Object getObject() { ... } 
関連する問題