特定の時点で外部ページを新しいタブで開き、最初のページをアクティブのままにする必要があるjsfアプリケーションで作業しています。ボタンを 1 回クリックするだけで、アプリケーションを実行する方法を見つける必要があります。
- 新しいタブでの外部 URL へのリダイレクト
- 元のページのボタン自体を無効にするアクション
を使用してみました<outputLink />
が、アクション属性がありません。を使用してみました<commandLink />
が、外部にリダイレクトできません。また、バッキング Bean でコード化された<commandLink />
withとリダイレクトも試しました。target="_blank"
<h:commandLink onclick="submit();" target="_blank" action="#{myBean.execute}" disabled="#{myBean.linkDisabled}" value="external link" />
そして、バッキング 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;
}
ページが新しいタブで開かれますが、それは URL のあるページではなく現在のページでConstants.EXTERNAL_URL
あり、ボタンはまだ有効になっています。エラーメッセージは表示されません。なにか提案を?
前もってありがとう、アンドレア