2

下手な英語でごめんなさい。グリズリーとジャージーを使用して Web アプリケーションを構築しています。

そして、私はこのように実装します

        ErrorModel errorModel = new ErrorModel("1", "1", "1");
        WebApplicationException applicationException = (WebApplicationException) exception;
        return Response.status(applicationException.getResponse().getStatus()).type(MediaType.APPLICATION_JSON_TYPE).entity(errorModel).build();

存在しないページにアクセスしたとき。WebApplicationException をスローすることがわかりました。したがって、デバッグして、このメソッドが呼び出されていることを発見し、上記の応答を返します。しかし、最終的に http 応答は grizzly によって作成された html ページです。私は何をすべきか

4

1 に答える 1

5

RESPONSE_SET_STATUS_OVER_SEND_ERROR プロパティが設定されていることを確認してください。

grizzly でも同じ問題があり、400 をキャッチしてデフォルトの汎用サーブレット エラー ページを送り返していました。これがジャージ2の解決策でした。

public class RestApplication extends ResourceConfig {

    private static final Logger logger = Logger.getLogger(RestApplication.class.getName());

    public RestApplication() {
        // Set this property so that the 400 will still send the entity correctly.
        property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, "true");
        registerModules();
    }
于 2015-03-02T17:12:48.053 に答える