如何在使用primefaces Printer打印后重定向到页面



我使用了primefaces打印机,希望在打印后重定向到上一页。我是这样使用打印机的:

   <p:commandButton  value="Print" type="button" title="Print" actionListener="#{currentpage.redirect}"> 
        <f:ajax execute="@this"/>
        <p:printer target="printer" />
    </p:commandButton> 

在currentpage bean的重定向方法中,我删除了工作正常的记录,但如果我试图将其重定向到前一页,它不会做任何事情。

public void redirect(ActionEvent actionevent) {
              /* Deleted the record */ 
}

如果我可以这样做或其他方式,请指导我。

在你的代码中有几个误解:

  • actionListener方法不能触发重定向。这可以在action
  • 中实现。
  • ajax请求不能触发重定向。Ajax的作用是作为对服务器的异步请求,将所需的结果发送到当前视图,并处理响应以更新视图,而无需刷新页面或导航。
  • 如果使用Primefaces组件,您应该使用它们来提高页面的效率。例如,<p:commandButton>应该与<p:ajax>而不是<f:ajax>一起工作。但是在这种情况下,<p:commandButton>已经内置了ajax功能,所以没有必要使用这些ajax组件。

知道了这些,你就知道你的设计应该改成这样:

<p:commandButton value="Print" type="button" title="Print"
    action="#{currentpage.redirect}" process="@this">
    <p:printer target="printer" />
</p:commandButton>

和方法声明到:

//parameterless
public void redirect() {
    /* Deleted the record */ 
}

PrimeFaces允许您通过使用oncomplete属性在ajax请求完成时添加行为。该属性接收一个javascript函数的名称,该函数将在ajax请求顺利完成时被调用。在此方法中,您可以为您的重定向添加逻辑:

<p:commandButton value="Print" type="button" title="Print"
    action="#{currentpage.redirect}" process="@this" oncomplete="redirect()">
    <p:printer target="printer" />
</p:commandButton>
<script type="text/javascript>
    redirect = function() {
        window.location.href = '<desired url>';
    }
</script>

相关内容

  • 没有找到相关文章

最新更新