Установить код состояния HTTP для перенаправления при возврате строки в контроллере Spring 3 - PullRequest
3 голосов
/ 09 сентября 2011

Есть ли способ указать код состояния HTTP при возврате "redirect:/new/url" в Spring 3?

Ответы [ 2 ]

0 голосов
/ 18 июня 2016

Как отмечено Сколитом , вы должны вернуть RedirectView с набором statusCode.Использование префикса "redirect:" всегда приводит к состоянию HttpStatus.MOVED_TERMPORARILY (302).

Если вам нужна возможность вернуть String из метода вашего контроллера, а также RedirectView, вы должны изменитьсигнатура метода для возврата Object.Пример:

@RequestMapping
public Object someMethod() {
    if (doRedirect) {
        RedirectView rv = new RedirectView("/new/url");
        rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY); // set our own status code
        return rv;
    } else {
        return "someView";
    }
}
0 голосов
/ 09 сентября 2011

Не пробовал, но, глядя на источник org.springframework.web.servlet.view.RedirectView, у него есть getHttp11StatusCode() метод, который определяет HTTP-статус ответа.

Похоже, вы можете переопределить код ответа по умолчанию с помощью настроекorg.springframework.web.servlet.View#RESPONSE_STATUS_ATTRIBUTE недвижимость по запросу.Просто установите:

httpServletRequest.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, status)

перед возвратом с видом "redirect:".

...