3

私は実行されるControllerクラスを持っています。しかし、私は何の応答も得られません。

私は と を使用して<mvc:annotation-driven />います。jackson-core-asl-1.9.13.jarjackson-mapper-asl-1.9.13.jar\WEB-INF\lib

@RequestMapping(value = "/persons.htm", method = RequestMethod.GET, produces={"application/json"})
public @ResponseBody Collection<Person> getPersons() {
    Collection<Person> persons = personService.findPersons("Smith"); // request comes here 
    System.out.println("persons " + persons); // This works fine
    // If I discard the result and add dummy data it works fine.
    return persons;
}

500 Internal Server Errorは休憩クライアントに入ります。コンソールに例外スタック トレースが表示されません。

4

2 に答える 2

2

あなたの問題は、リクエスト@RequestMappingとしての値にある可能性があります。.htm拡張のため、Spring はメディア タイプを JSON ではなく HTML に設定する場合があります。したがって、リクエスト マッピングを次のように変更することをお勧めします。value = "/persons.json"

次に、produces = {"application/json"}中かっこ {} は必要ありません。かもね:produces = "application/json"

また、Spring 構成には、次のようなジャクソン マッパーがありますか。

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
            <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
            <bean class="org.springframework.http.converter.FormHttpMessageConverter" />
            <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
        </list>
    </property>
</bean>
于 2013-09-29T09:19:05.097 に答える
0

Java 6以降、何を設定するかを正確に覚える必要はありませんproduces。さまざまなメディアタイプがすべて事前定義されているクラスがあることを覚えておいてください。そのクラスを調べて、選択したメディアを見つけて静的にインポートします。

import static javax.ws.rs.core.MediaType.APPLICATION_JSON; 

単純に読みやすいきちんとしたコードを書くことができるように:

@RequestMapping( ... produces=APPLICATION_JSON ... ) 

速攻です。

対応するドキュメントは次のとおりです: http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/MediaType.html

于 2016-04-01T13:20:30.873 に答える