2012-10-12 154 views
1

我有一個適用於servlet的上傳例程。現在,我試圖把這個程序在這樣的JSF託管bean:JSF託管的上傳bean?

public void uploadFile() throws IOException, ServletException{ 

    FacesContext facesContext = FacesContext.getCurrentInstance(); 
    ExternalContext externalContext = facesContext.getExternalContext(); 
    HttpServletRequest request = (HttpServletRequest) externalContext.getRequest(); 
    HttpServletResponse response = (HttpServletResponse) externalContext.getResponse(); 


    Part filePart = request.getPart("item"); 
    String filename = getFilename(filePart); 
    InputStream filecontent = filePart.getInputStream(); 

    //persist the data here 

} 

試圖在服務器上運行它的時候,當然有錯誤消息:「PWC4016:Request.getPart被稱爲無多或者將一個@MultipartConfig添加到servlet中,或者將一個multipart-config元素添加到web.xml中「

但是我不知道把這個註解放在哪裏,我也沒有把jsf生成的servlet的名稱我的託管bean,所以我不能把它放到web.xml中。 把這個例程放到一個託管bean中通常是一個壞主意,還是應該堅持servlet變體?

回答

1

@MultipartConfig基本上需要放在FacesServlet。你不能自己做,但這已經完成了the upcoming JSF 2.2,完成一個新的標準<h:inputFile>組件與ajax支持,另請參閱JSF spec issue 802

在此之前,最好的辦法是抓取第三方組件庫或自制一個自定義組件。

+0

我目前使用JUpload小程序上傳文件,因此上傳是沒有問題的。相反,使用託管bean處理上載似乎目前還不可能 – nico1510

+0

如果源不是JSF視圖,那麼爲什麼還需要JSF模型呢?實際上就是使用一個簡單的servlet。即使使用JSF 2.2,它也不會(很好)成爲可能。 – BalusC

+0

由於我有一個文件下載鏈接在我的jsf和一個託管的bean服務文件下載(根據你的文章[鏈接](http://stackoverflow.com/a/3428207/1644061)),我認爲這將是一個把這個上傳例程放在這個bean中也是個好主意。但我認爲那是錯誤的決定吧? – nico1510