Есть ли способ указать код состояния HTTP при возврате "redirect:/new/url"
в Spring 3?
Установите код состояния HTTP для перенаправления при возврате строки в контроллере Spring 3.
Ответы (2)
Не пробовал, но, глядя на источник org.springframework.web.servlet.view.RedirectView
, у него есть метод getHttp11StatusCode()
, который определяет статус ответа HTTP.
Похоже, вы можете переопределить код ответа по умолчанию, настроив свойство org.springframework.web.servlet.View#RESPONSE_STATUS_ATTRIBUTE
по запросу. Просто установите:
httpServletRequest.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, status)
прежде чем вернуться с видом "redirect:
".
person
Tomasz Nurkiewicz
schedule
09.09.2011
Это не работает и, возможно, никогда не работало;) jira.spring.io/browse/SPR-12719< /а>
- person Scolytus; 17.02.2015
Как отметил Scolytus, вы должны вернуть 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";
}
}
person
Aaron Blenkush
schedule
17.06.2016