JSF 2 - постоянное перенаправление (301)
Я пытаюсь реализовать перенаправление 301 изнутри JSF, но когда я его запускаю, я всегда вижу, как выполняется 302. Кто-нибудь сможет показать мне, как изменить метод ниже, чтобы выполнить 301?
/**
* Redirect to specified destination url
*
* @param destination
*/
public static void permanentRedirect(String destination) {
final ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
try {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
if (!response.isCommitted()) {
externalContext.redirect(destination);
}
} catch (IOException e) {
LOGGER.debug("Could not redirect to " + destination);
}
}
1 ответ
Решение
Вы не должны ссылаться externalContext.redirect(destination)
, Это переопределит статус на 302. Вы должны вручную установить Location
заголовок и заполните ответ.
externalContext.setResponseStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
externalContext.setResponseHeader("Location", destination);
facesContext.responseComplete();