2009-12-26 121 views
2

有誰知道JSF 2.0組件有什麼好的資源嗎?我試圖開發一個文件上傳組件來教自己的JSF 2.0和Servlet 3.0,但我很難找到資源。我一直在看Mojarra 2.0.2源代碼,但似乎很多東西仍在使用JSF 1.x概念。任何見解都會被讚賞。JSF 2.0組件

+0

我想我需要標準的JSF組件而不是複合組件。任何人都可以證實對我? – anthonator 2009-12-26 05:11:06

+0

複合組件由標準組件組成,目的是消除一次又一次重複相同組件的需要。JSF標準實現沒有用於文件上傳的任何標準組件。 – BalusC 2009-12-26 14:33:15

+0

好的,這就是我的想法,但我並不完全確定。感謝您的澄清。 – anthonator 2009-12-27 18:28:30

回答

7

上週在Sun論壇上,有人發佈了一個自定義JSF 2.0文件上傳組件的例子,但它是在Apache Commons FileUpload API上構建的,代碼在這裏和那裏有幾處漏洞,但可能有足夠的信息開始。但要小心一些,這些缺陷是嚴重的:JavaServer Faces - Creating JSF 2.0 File Upload Component

巧合的是,我最近也在圍繞一個JSF 2.0文件上傳組件與新的Servlet 3.0 multipart支持一起玩這個想法,博客。這只是很難確定創建JSF 2.0自定義組件(@FacesComponent)的方式,Google揭示了一些,只有this blog of Jim Driscoll有點用處。此外,它在Java EE 6教程中沒有解釋,甚至JSF 2.0規範也沒有提到。

更新:我得到它的工作,但有一個主要的缺點:我不能使用了Servlet 3.0 @MultipartConfig註釋來指定上傳位置和最大文件大小。只有在Servlet而不是Filter上設置,纔會激活此功能。由於FacesServlet被宣佈爲final並且JSF沒有提供其他ServletFacesServlet開始之前處理請求的功能,所以我沒有看到任何使用註釋的乾淨方法。通常情況下,上傳位置將在註釋中進行配置,但通過使用Part#getInputStream()而非Part#write(),這很容易解決。如果沒有註釋,最大文件大小決不可配置,因此您必須忍受「無限大小的上傳」,以及您只能在上傳完成時驗證它的事實(這可能是另一個優勢,因爲最終用戶會面臨醜陋的HTTP 500錯誤)。

更新2::這裏的博客:http://balusc.blogspot.com/2009/12/uploading-files-with-jsf-20-and-servlet.html希望這有助於:)

0

標準JSF組件不包括文件上傳組件。這個組件通常在第三方JSF組件庫中提供,例如myfaces,icefaces等...

目前我還不知道任何JSF 2.0組件庫已經準備好了(除了spec標準),所以我不知道任何JSF 2.0準備好的文件上傳組件。

2

我會強烈建議考慮看看到PrimeFaceshttp://primefaces.org/

這是一個JSF內置組件套件(並且特別支持JSF 2.0),在開放源代碼許可下使用YahooUI,並支持您的文件上傳場景。

+1

我在jsf 2中使用了相當不錯的primefaces,但上傳組件不穩定。您可以在論壇中看到討論 http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=2626&p=12545&hilit=fileupload#p12545 http://primefaces.prime.com.tr /forum/viewtopic.php?f=3&t=2227&p=12469&hilit=fileupload#p12469 所以,雖然你可以使用其他jsf2東西的primefaces,你可能需要尋找其他地方的上傳組件。 – digitaljoel 2010-06-09 21:25:32