【问题标题】:PrimeFaces fileuploadPrimeFaces 文件上传
【发布时间】:2012-12-24 21:58:01
【问题描述】:

我在一个项目中使用 jsp/Servlet,我决定使用 PrimeFaces 迁移到 JSF,我在尝试使用 PrimeFaces 文件上传控件上传文件时遇到了一个问题,然后当我将它配置到 web.xml 时它运行良好,现在所有旧的jsp文件上传方式都不起作用的问题:

 DiskFileUpload upload = new DiskFileUpload();
 List items = upload.parseRequest(request);

【问题讨论】:

    标签: servlets jsf-2 primefaces jspx


    【解决方案1】:

    确实,一个 HTTP 请求只能解析一次。如果您需要解析两次,客户端不会再次发送它。您的问题表明 PrimeFaces 文件上传过滤器由于某种原因也在普通 JSP/Servlet 请求上调用,因此在普通 JSP/Servlet 有机会解析它以供自己使用之前解析 JSF 的上传。这不应该发生。

    您只需要将 PrimeFaces 文件上传过滤器映射到 JSF 请求,而不是普通 JSP/Servlet 请求。您通常通过将其映射到 FacesServlet 来实现。

    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    

    &lt;servlet-name&gt; 必须与FacesServlet 类的&lt;servlet&gt; 定义中使用的值完全相同;&lt;filter-name&gt; 显然与@987654327 中使用的值完全相同@文件上传过滤器类的定义)

    或者,如果由于某些不明显的原因直接在 JSF 页面中使用了旧的 JSP/Servlet 文件上传方法,那么您需要将 PrimeFaces 文件上传过滤器映射到仅覆盖包含 PrimeFaces 的页面的更具体的 URL 模式文件上传组件。

    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <url-pattern>/upload.xhtml</url-pattern>
    </filter-mapping>
    

    (如果您将FacesServlet 映射到例如*.jsf 而不是*.xhtml,那么您显然应该将URL 模式更改为/upload.jsf

    请注意,您可以在单个过滤器映射上指定多个 &lt;url-pattern&gt; 条目,这对于您有多个包含 PrimeFaces 文件上传组件的页面的情况很有用。

    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <url-pattern>/upload1.xhtml</url-pattern>
        <url-pattern>/upload2.xhtml</url-pattern>
        <url-pattern>/upload3.xhtml</url-pattern>
    </filter-mapping>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 2012-01-21
      • 2017-03-13
      • 2013-03-10
      • 2013-07-23
      相关资源
      最近更新 更多