web-dev-qa-db-fra.com

Rediriger vers une URL externe dans JSF

J'ai eu un problème avec JSF, quand il s'agit de rediriger vers des pages à l'intérieur de mon application, cela fonctionne très bien, mais je n'ai pas pu rediriger vers une URL externe, quelqu'un peut-il me guider à ce sujet?

34
Necronet

Soit juste mentionner l'URL directement dans <a> Ou <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>

Ou, si vous devez invoquer une action de bean en utilisant <h:commandLink> Comme ci-dessous,

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

puis utilisez ExternalContext#redirect() dans la méthode d'action.

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

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

Notez que vous n'avez pas besoin d'attraper ce IOException, le serveur s'en occupera. Notez également l'importance d'inclure le schéma (http:// Ou https:// Ou //) Dans l'URL, sinon il sera interprété par rapport au domaine actuel.

85
BalusC