我使用过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 */
}
如果我可以这样做或任何其他方式,请指导我。 提前谢谢。
答案 0 :(得分:3)
您的代码中存在一些误解:
actionListener
方法无法触发重定向。这可以在action
<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>