Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF:页面加载后的自动触发事件_Jsf_Jakarta Ee_Jsf 2_Primefaces - Fatal编程技术网

JSF:页面加载后的自动触发事件

JSF:页面加载后的自动触发事件,jsf,jakarta-ee,jsf-2,primefaces,Jsf,Jakarta Ee,Jsf 2,Primefaces,我正在使用这个primefaces媒体标签来查看PDF <p:media value="#{bean.path}" width="100%" height="600px"> </p:media> 现在,从该页面的特定文件夹加载PDF文件后,(ViewPDF.xhtml)我想从文件夹中删除该PDF文件。我搜索并尝试了该文件的标记,并使用了它的type=“postAddToView”但它会在浏览器中显示PDf之前删除该文件,我希望在浏览器中加载PDf文件后将其删

我正在使用这个primefaces媒体标签来查看PDF

<p:media value="#{bean.path}" width="100%" height="600px">    
</p:media>



现在,从该页面的特定文件夹加载PDF文件后,
(ViewPDF.xhtml)
我想从文件夹中删除该PDF文件。我搜索并尝试了该文件的
标记,并使用了它的
type=“postAddToView”
但它会在浏览器中显示PDf之前删除该文件,我希望在浏览器中加载PDf文件后将其删除。我应该使用什么来完成此操作?
如果您有任何帮助,我们将不胜感激。

PDf文件在“页面加载后”未完成下载。它由一个完全独立的HTTP请求下载,该请求在页面加载后启动。您可以将筛选器映射到所需的URL模式,并在调用
chain.doFilter()
后执行该作业。但这有点奇怪

我知道您正在生成PDF报告,该报告应仅在提交时显示。在这种情况下,您应该创建一个单独的servlet,它根据一些请求参数生成PDF,并将其直接写入响应输出流,而不是文件输出流。最后,让JSF使用适当的请求参数为该servlet生成正确的URL

例如

和这样的servlet(假设您使用iText生成PDF):

如果希望隐藏请求参数,也可以通过自动生成/唯一ID将它们存储在会话中,并将其作为请求参数传递

public void submit() {
    // ...

    path = externalContext.getRequestContextPath() + "/pdf"
        + "?foo=" + URLEncoder.encode(foo, "UTF-8")
        + "?bar=" + URLEncoder.encode(bar, "UTF-8")
        + "?baz=" + URLEncoder.encode(baz, "UTF-8");
}
@WebServlet("/pdf/*")
public class PdfServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String foo = request.getParameter("foo");
        String bar = request.getParameter("bar");
        String baz = request.getParameter("baz");
        // ...

        response.setContentType("application/pdf");
        PdfWriter.getInstance(document, response.getOutputStream());
        // ...
    }

}