3 votes

Ouvrir une page dans un nouvel onglet du navigateur à partir d'un haricot

Est-il possible d'ouvrir une ressource dans un nouvel onglet du navigateur (comme target="_newtab" pour les boutons de commande) à partir d'un code jsf côté serveur ?

Le code suivant ouvre la ressource dans le même onglet :

FacesContext.getCurrentInstance().getExternalContext().redirect("resource.jsp"); 

J'utilise primefaces. Je pense qu'il y a une possibilité avec javascript et icefaces.

6voto

BalusC Points 498232

Vous ne pouvez pas contrôler cela du côté du serveur. Il faut le faire du côté du client. Par exemple, le bouton de commande qui invoque l'action du bean doit avoir un attribut target="_blank" sur son parent <h:form> .

<h:form target="_blank">
    <h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>

Ou si vous n'effectuez aucun post-traitement dans la méthode d'action, remplacez simplement le bouton par un simple lien.

<a href="resource.jsp" target="_blank">link</a>

5voto

Ziagl Points 140

La meilleure solution que j'ai trouvée est la suivante :

PrimeFaces.current().executeScript("window.open('resource.jsp', '_newtab')");

Ou lorsque vous ne disposez pas encore de PrimeFaces 6.2 ou d'une version plus récente :

RequestContext.getCurrentInstance().execute("window.open('resource.jsp', '_newtab')");

0voto

joseluis Points 1

Cela a fonctionné pour moi avec Icefaces :

JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.open(dir, '_newtab');");

dir est la direction du nouvel onglet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X