在 commandLink 操作中打开额外的 link

Open additional link in commandLink action

我有以下命令链接:

<h:commandLink action="#{orderForm.printOrderCards}"
    value="Print Document">
</h:commandLink>

ActionHandler 如下所示:

public String printOrderCards() {
    try {
        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext()
                .getResponse();

        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<script type=\"text/javascript\">");
        String url = "http://nb200srv2016:8080/obt-documents/Artikel/2050/1007144_Rev.BA.pdf?allowCache=true&openDirectly=true";
        out.println("window.open(\"" + url + "\");");

        out.println("</script>");
        out.println("</body></html>");
        out.flush();
        out.close();
    } catch (final IOException e) {
        e.printStackTrace();
    }
    return "go_printOrderCards";
}

那里我想在新的Window中打开一个URL。在 Action 之后应该打开一个 jsp-Page (go_PrintOrderCards)。 新的window中的URL会被打开。但是 go_PrintOrderCards 的新 jsp 页面将不会显示。

谁能帮帮我,我该如何解决?

您可以做的是:

1) 将 printOrderCards 方法的 return 类型更改为 void,如下所示:

public void printOrderCards() {

2) 删除 printOrderCards 方法中的所有代码行并在方法中添加这些行:

String url = "http://nb200srv2016:8080/obt-documents/Artikel/2050/1007144_Rev.BA.pdf?allowCache=true&openDirectly=true";
RequestContext requestContext = RequestContext.getCurrentInstance();  
requestContext.execute("window.open('"+url+"')");