我正在一个 jsf 应用程序中工作,该应用程序在某个时间需要在新选项卡中打开一个外部页面,使第一页保持活动状态。我需要找到一种方法来使应用程序执行,只需单击一下按钮:
- 在新选项卡中重定向到外部 URL
- 在原始页面中禁用按钮本身的操作
我试过使用 an<outputLink />
但它没有 action 属性。我试过使用 a<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
并且该按钮仍处于启用状态。不显示错误消息。有什么建议吗?
在此先感谢,安德里亚