Перенаправление на внешний URL в JSF - PullRequest
34 голосов
/ 23 февраля 2011

Я имел дело с проблемой JSF, когда дело доходит до перенаправления на страницы внутри моего приложения, оно прекрасно работает, но я не смог перенаправить на внешний URL, может кто-нибудь подсказать мне об этом?

1 Ответ

85 голосов
/ 23 февраля 2011

Либо просто укажите URL-адрес непосредственно в <a> или <h:outputLink>.

<a href="http://stackoverflow.com">Go to this site!</a>
<!-- or -->
<h:outputLink value="http://stackoverflow.com">Go to this site!</h:outputLink>

Или, если вам нужно вызвать действие компонента, используя <h:commandLink>, как показано ниже,

<h:form>
    <h:commandLink value="Go to this site!" action="#{bean.redirect}" />
</h:form>

затем используйте ExternalContext#redirect() в методе действия.

public void redirect() throws IOException {
    // ...

    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    externalContext.redirect("http://stackoverflow.com");
}

Обратите внимание, что вам не нужно ловить этот IOException, сервер с этим справится.Также обратите внимание на важность включения схемы (http:// или https:// или //) в URL, в противном случае она будет интерпретироваться относительно текущего домена.

...