我有一个按钮,可以打开一个带有生成的 pdf 文件的新选项卡。但是,单击按钮后,我想导航到另一个页面。
这意味着,单击按钮后,我想用 pdf 打开一个新选项卡并导航到初始选项卡上的另一个页面。我正在使用 primefacesp:commandButton并尝试过,onclick="window.location.href='www.google.de'"但它不起作用。但是onclick="window.lalert('www.google.de')"确实有效。
这是我的代码:
<h:form id="transForm" target="_blank">
<p:commandButton  value="Zertifikat erstellen" ajax="false" 
                                label="Speichert die Anmeldung und erstellt ein Zertifikat im PDF-Format"
                                action="#{transportErfassen.generatePDFZertifikat()}"/>
</h:form>
generatePDFZertifikat()确实使用以下代码创建了一个pdf文件,我认为这是问题所在:
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    externalContext.setResponseContentType("application/pdf" );
    externalContext.setResponseHeader("Expires", "0");
    externalContext.setResponseHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
    externalContext.setResponseHeader("Pragma", "public");
    externalContext.setResponseHeader("Content-disposition", "inline; filename=\"" + fileName +"\"");
    externalContext.setResponseContentLength(out.length);
    externalContext.addResponseCookie(Constants.DOWNLOAD_COOKIE, "true", new HashMap<String, Object>());
    //setze explizit auf OK
    externalContext.setResponseStatus(200);     
    OutputStream os = externalContext.getResponseOutputStream();
    os.write(out, 0, out.length);
    os.flush();
    facesContext.responseComplete();       
    facesContext.renderResponse();