2012-12-24 88 views
3

我使用JSP/Servlet的到一個項目,我已經決定使用PrimeFaces遷移到JSF,而嘗試使用PrimeFaces FileUpload控件,然後上傳文件時,我已經配置到web.xml中我所面臨的一個問題是現在的問題是,所有舊的jsp文件上傳方式都不起作用:PrimeFaces文件上傳

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

回答

4

事實上,一個HTTP請求只能被解析一次。如果您需要解析兩次,客戶端不會再次發送它。你的問題表明PrimeFaces文件上傳過濾器是出於某種原因還援引在一個普通的JSP/Servlet的請求,因此前平原JSP/Servlet的就有機會解析它自己使用解析爲JSF上傳。這不應該發生。

您需要映射只,而不是簡單的JSP/Servlet的請求JSF請求PrimeFaces文件上傳過濾器。你通常通過它映射到FacesServlet實現這一目標。

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

(所述<servlet-name>必須完全如在FacesServlet類的<servlet>定義被使用的值相同;所述<filter-name>顯然是完全一樣在<filter> definiton文件上載過濾器類的被使用的值相同)

或者,如果舊的JSP/Servlet的文件上傳方法是在JSF頁面直接用於一些不明顯的原因,那麼你需要的PrimeFaces文件上傳過濾圖上只覆蓋頁面更具體的URL模式包含PrimeFaces文件上傳com Ponent(波納恩特)。

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

(如果你已經映射到例如*.jsf,而不是*.xhtmlFacesServlet,那麼很顯然你應該改變URL模式/upload.jsf

請注意,您可以指定多個<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> 
相關問題