从bean在新的浏览器选项卡中打开页面



是否可以从服务器端jsf代码打开资源到新的浏览器选项卡(如target="_newtab" for command buttons) ?

下面的代码在同一个选项卡中打开资源:

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

我用的是质面。我认为javascript和icefaces是有可能的

您无法在服务器端控制它。你需要在客户端控制它。例如,调用bean动作的命令按钮应该在其父<h:form>上有一个target="_blank"

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

或者如果你没有在action方法中做任何后处理的东西,就把那个按钮全部替换成一个普通的链接。

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

我找到的最佳解决方案是:

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

或者当你没有使用PrimeFaces 6.2或更新版本时:

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

这对我在Icefaces上很有效:

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

其中dir为新制表符方向

相关内容

  • 没有找到相关文章

最新更新