実際、HTTPリクエストは1回しか解析できません。2回解析する必要がある場合、クライアントは2回目に送信することはありません。問題は、PrimeFacesファイルアップロードフィルターが何らかの理由でプレーンJSP /サーブレットリクエストでも呼び出され、プレーンJSP/サーブレットが自分で使用するために解析する前にJSFのアップロードを解析することを示しています。これは起こらないはずです。
PrimeFacesファイルアップロードフィルターは、プレーンなJSP /サーブレットリクエストではなく、JSFリクエストのみにマッピングする必要があります。通常、これをにマッピングすることで実現しますFacesServlet
。
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
(は、クラスの定義で使用されているのとまったく同じ値である必要<servlet-name>
があります。これは、ファイルアップロードフィルタークラスの<servlet>
定義で使用されているのとまったく同じ値であることは明らかです)FacesServlet
<filter-name>
<filter>
または、その古いJSP /サーブレットファイルアップロードアプローチが何らかの理由でJSFページで直接使用されている場合は、PrimeFacesファイルアップロードコンポーネントを含むページのみをカバーするより具体的なURLパターンにPrimeFacesファイルアップロードフィルターをマッピングする必要があります。 。
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<url-pattern>/upload.xhtml</url-pattern>
</filter-mapping>
FacesServlet
(たとえば、*.jsf
の代わりにをマップした場合*.xhtml
は、明らかにURLパターンをに変更する必要があります/upload.jsf
)
1つのフィルターマッピングで複数のエントリを指定できることに注意してください<url-pattern>
。これは、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>