0

jQGrid から、次のバインディングを持つ Guice サーブレットへの呼び出しを行っています。

@Produces({MediaType.APPLICATION_JSON})
@Path("/{param}")
public String getJson(@PathParam("param") String param) {
    ...
    return return json.toString();
}

URL を直接要求すると、JSON が表示されます。jqgrid がリクエストを実行すると、405 method not allowed レスポンスが返されます。返されるページの Content-type が「text/json」に設定されていない場合に、これが発生するのを見たことがあります (ここでは jqgrid はあまり柔軟ではありません)。

ここにリクエストがあります: Key Value Request POST /myapp/json/jqgrid/json ... HTTP/1.1 x-requested-with XMLHttpRequest Accept-Language en-us Referer http://localhost:8080/myapp/myPage ... Accept application/json, text/javascript, / Content-Type application/x-www-form-urlencoded Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (互換性あり; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)ホスト localhost:8080 コンテンツの長さ 63 接続 キープアライブ キャッシュ制御 キャッシュなし

レスポンスは次のとおりです: キー 値 レスポンス HTTP/1.1 405 Method Not Allowed Server Apache-Coyote/1.1 Allow GET,OPTIONS,HEAD Content-Type text/html;charset=utf-8 Content-Length 1034

Guice サーブレットで Content-type を「text/json」に設定し、応答を許可する方法について何か考えはありますか?

4

1 に答える 1

0

こちらは解決済みです。@GET アノテーションを使用していて、jQGrid が投稿を発行していました。@POST を変更したところ、機能し始めました。これにより、関連する 405 エラーを持つ他のユーザーの問題が解決される場合があります。

于 2011-08-15T01:15:52.937 に答える