Redirection vers une URL externe dans un nouvel onglet et l'exécution d'une action dans la sauvegarde de haricot en même temps

Je travaille dans une application jsf qui, à un certain temps pour ouvrir une page externe dans un nouvel onglet, laissant la première page active. J'ai besoin de trouver un moyen de faire la demande d'effectuer, en un seul clic de bouton:

  1. une redirection vers une URL externe dans un nouvel onglet
  2. une action qui désactive le bouton dans la page d'origine

J'ai essayé d'utiliser un <outputLink /> mais il n'a pas d'attribut action.
J'ai essayé d'utiliser un <commandLink />mais c'est pas en mesure de rediriger l'extérieur.
J'ai aussi essayé un <commandLink /> avec target="_blank" et une redirection codé dans le backing bean:

<h:commandLink onclick="submit();" target="_blank" action="#{myBean.execute}" disabled="#{myBean.linkDisabled}" value="external link" />

et, dans le backing bean:

public String execute() {
    linkDisabled = true;

    try{
        ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
        externalContext.redirect(Constants.EXTERNAL_URL);
    } catch(Exception e){
        throw new FacesException("Redirection failed");
    }

    return THIS_PAGE;
}

Une page est ouverte dans un nouvel onglet, mais c'est la page en cours, au lieu de le que avec l'URL Constants.EXTERNAL_URLet le bouton est toujours activé. Aucun message d'erreur n'est affiché. Toute suggestion?

Merci d'avance, Andrea

OriginalL'auteur avalori | 2012-04-17