При ошибке не удается получить сущность ResponseBuilder в ответе XMLHttpRequest - PullRequest
0 голосов
/ 01 октября 2018

В моем приложении JAXRS я выдаю исключение LicenseKeyException, если лицензия недействительна.Это исключение перехватывается ExceptionMapper, который отвечает вызывающей стороне кодом состояния 403, причем сущность содержит некоторую дополнительную информацию, которую я хочу отправить вместе со статусом.

Но на моем клиенте javascript в XMLHttpRequest,Я получаю только статус, а не ответ.

Java-код

@Provider
public class LicenseKeyExceptionMapper implements ExceptionMapper<LicenseKeyException> {
    @Override
    public Response toResponse(final LicenseKeyException exception) {
        return Response
            .status(Response.Status.FORBIDDEN)
            .entity(exception.getMessage()) // I want this to be available to the javascript caller
            .build();
    }
}

Javascript code

let xhr = new XMLHttpRequest();
xhr.open(opt.method, makeActuelURL(opt.url), true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("licenseKey", opt.licenseKey);
let json = JSON.stringify({...opt, charsetName: "utf-8"});
xhr.responseType = "json";
xhr.onload = () => {
    if (xhr.status === 200)
        resolve(xhr);
    else
        reject(makeError(xhr));
};
xhr.onerror = () => reject(makeError(xhr));
xhr.send(json);

Когда статус не 200 (я пробовал 500 и 403), поле ответа в объекте xhr является нулевым.Я ожидал найти в коде Java сущность, которую, как мне казалось, я поместил туда.

Что я делаю не так?

...