如何在新窗口中打开页面NOT tab使用h:commandLink?

时间:2014-04-10 11:34:16

标签: jsf

使用Primefaces 4.0和JSF 2.2。

我想将访问者发送到新窗口中的页面(而不是标签页)。着陆页是一个名为grade.xhtml

的jsf页面

我试过了:

<h:commandLink value="OK" onclick="window.open('grade.html', 'newwindow','width=300, height=300'); return false;"/>

这达到了404.显然,这一切都在客户端发生,因此grade.html不会从grade.xhtml生成。我该怎么办?

注意:如果我放onclick="window.open('grade.xhtml', 'newwindow','width=300, height=300'); return false;",那么页面就会打开,但它是jsf(xhtml代码)而不是html版本。

3 个答案:

答案 0 :(得分:3)

试试这个:

<h:commandLink value="OK" action="grade.xhtml" target="_blank"/>

在此处查看示例:When i click on any link it should Open in the same New Window in JSF, Primefaces

答案 1 :(得分:2)

我使用javaScript来试试吧:

<script type="text/javascript" language="javascript">
    function funcForWindowPopup()
    {
        var popup = null;
        popup = window.open("grade.xhtml", "popup", "toolbar=no,menubar=no,scrollbars=yes,location=no,left=350,top=50,width=650, height=600");
        popup.openerFormId = "formID";
        popup.focus();
    }

</script>

您可以根据需要更改参数;)

答案 2 :(得分:0)

从JSF控制器打开新窗口中的URL。

HttpServletResponse res = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
            HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
            String uri = req.getRequestURI();
            res.getWriter().println("<script>window.open('" + myUrl + "','_blank', 'location=yes,height=600,width=800,scrollbars=yes,status=yes'); window.parent.location.href= '"+uri+"';</script>");
            FacesContext.getCurrentInstance().responseComplete();