【发布时间】:2016-07-16 21:43:48
【问题描述】:
我有一个带有两个过滤器 PrimeFaces FileUpload Filter 和 loggedInFilter 的 web.xml 文件。如果我评论 loggedInFilter,则 FileUpload 过滤器工作得非常好并且 FileUploadEvent 被触发。如果我将两个过滤器都保留在 web.xml 中,则不会触发 FileUpoadFilter。下面是我的 web.xml
<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>commons</param-value>
</context-param>
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter>
<filter-name>loggedInFilter</filter-name>
<filter-class>com.web.filter.loggedInFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loggedInFilter</filter-name>
<servlet-name>*.xhtml</servlet-name>
</filter-mapping>
我尝试在 PrimeFaces FileUpload Filter 过滤器映射中也包含调度程序,因为另一个过滤器,即应用程序中的 loggedInFilter 在 PrimeFaces 文件上传过滤器之前运行,但它没有帮助。
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
有人可以建议我需要做什么,因为我需要将两个过滤器都保留在 web.xml 中吗?
【问题讨论】:
-
所以你的
loggedInFilter正在以某种方式阻止文件上传请求。这个问题真的很难回答,因为loggedInFilter似乎是一个自制的过滤器,而且它的源代码无处可见,所以没有人能指出该过滤器中的代码错误。 -
@BalusC 正确的 loggedInFilter 是一个本土过滤器。我不能把代码作为它相当冗长的部分,并且只能在客户端机器上使用。我已经确定,如果我在 FileUploadFilter.doFilter() 和 FileUploadRender.decode() 上放置断点,它们工作正常,但我的视图类中定义的 FileUploadEvent 没有被调用,调试器点永远不会命中我的视图类。
-
只需发布 MCVE 风格的代码。当然,并非整个代码 sn-p 作为一个整体单元对不当行为负责。只需从最简单的行开始,
chain.doFilter(request, response),它始终可以保证工作。然后每次从原始源代码添加一行,直到它开始出现异常。从逻辑上讲,最后添加的行是问题的原因。最后将问题重新定义为“当我将这一行 [xxx] 添加到我的自定义过滤器时,PrimeFaces 文件上传过滤器停止工作,这是如何引起的,我该如何解决?”,这是一个完美的问题。跨度>
标签: jsf file-upload primefaces servlet-filters