2

私はこの問題について多くの質問を見つけましたが、私は解決しませんでした...私はこの方法を持っています:

@RequestMapping(value="/testInit")
public @ResponseBody Output test() throws Exception {
    return new Output(true);
}

そして、私はクラスパス、applicationContextへのジャクソンライブラリを持っていましたが、それでもこのjquery呼び出しで406エラーが発生します:

$.ajax({
    url: "/testInit",
    type: "get",
    dataType: "json"
}); 
4

5 に答える 5

4

jar を追加し、さらにDispatcherServlet-servlet.xmlにorg.springframework.http.converter.json.MappingJacksonHttpMessageConverterandを追加する必要があります。org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jacksonMessageConverter"/>
        </list>
    </property>
</bean>
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>

上記のように。

于 2013-10-18T05:42:24.560 に答える
0

応答は、406 Not Acceptableサーバーが返すことができないコンテンツ タイプをクライアントが要求した場合に使用されます。つまり、クライアント (Web ブラウザーなど) がAccept、サーバーの機能と一致しないヘッダーを送信しています。

ヘッダーdataTypeを設定するときにjQuery Ajaxメソッドがフィールドを使用していると推測しています。はよく知られたコンテンツ タイプではありませんが、そうです。Acceptjsonapplication/json

に置き換えdataType: "json"てみてくださいdataType: "application/json"

于 2012-07-03T10:11:42.013 に答える
0

私が動作させる唯一の方法は、Spring を 3.1 にアップグレードし、プロデュースをリクエスト マッピングに追加することでした。

@RequestMapping(value = "/rest/{myVar}", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public MyObject get(
        @PathVariable String myVar) {

他の解決策はどれもうまくいきませんでした

于 2012-07-18T15:08:41.463 に答える
0

jackson 2 ライブラリの代わりに jackson-all.1.9.0.jar を使用して解決しました。

于 2012-07-03T10:26:13.740 に答える
0

私はこの問題を抱えていましたが、最終的には、使用していたクラスにゲッターがないことを突き止めました。

つまり、これにより 406

public static class Pojo {
    private int x;
    public Pojo(int x) {
        this.x = x;
    }
}

しかし、これはしませんでした

public static class Pojo {
    private int x;
    public Pojo(int x) {
        this.x = x;
    }
    public int getX() {
        return x;
    }
}

はい、Pojo というクラスを使用していました :) - 新しいセットアップで Jackson が動作していることを確認するために、ダミーの例を実行していました。

于 2014-07-10T16:24:37.020 に答える