URI перенаправления не работает с DeferredResult <ResponseEntity> - PullRequest
0 голосов
/ 23 октября 2018

Ниже приведен пример кода, который я использую для ответа на этот API.

@RequestMapping(value = "/transactionStatusAsync")
public DeferredResult<ResponseEntity<?>> asyncTransactionStatus(HttpServletRequest request, Model model,
        Locale locale, HttpServletResponse response) {
    LOGGER.info("Request received async-deferredResult TransactionStatus request");
    //return generateDeferredAndProcessRequest(request, response);
    DeferredResult<ResponseEntity<?>> output = new DeferredResult<>();
    output.setResult(createResponseEntity(ERROR_PAGE,
            HttpStatus.REQUEST_TIMEOUT));
    return output ;
}

private static ResponseEntity<?> createResponseEntity(String path, HttpStatus status) {
    URI location = URI.create(path); **// "/WEB-INF/views/jsp/error.jsp"**
    boolean absolute = location.isAbsolute(); **//false**
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setLocation(location);
    ResponseEntity<?> objectResponseEntity = new ResponseEntity<>(responseHeaders, status);
    return objectResponseEntity ;
}

ПРИМЕЧАНИЕ. URI - это относительный, а не абсолютный URI.

Ошибка при поступлении: HTTP ERROR 408 (эта страница не работает)

Хотя мойответ с DeferredResult работает нормально, когда я пишу байты в теле ответа, как показано ниже: output.setResult (ResponseEntity.status (HttpStatus.OK) .body (responseData.getBytes ()));

Что я должен сделать, чтобы ответить на определенный URI в отложенном ответе?

...