2011-06-13 25 views
0

我試圖使用ace:fileEntry上傳圖片,因爲我讀取此組件需要從h:commandButton提交以便開始下載。我的問題是,當我將ice:commandButtonh:進行切換時,我的託管bean(位於對話範圍中)被重新創建(調用@PostConstruct),h:commandButton中的方法以及fileEntryListener不再被調用。
另一個可能導致這種情況的問題是,當我第一次進入我的頁面時,託管bean被創建,我打電話給對話開始,但是當我做第二個請求時(從commandLink),託管bean被重新創建,開始一個新的對話,之後你可以玩多久你不想再次創建託管bean。
回到我的第一個問題,如果我有ice:commandButton託管bean不會再次創建,如果它與h:它被重新創建。
爲了增加一點樂趣,如果我從ace:fileEntry中刪除呈現的屬性(解析爲true),將調用fileEntryListener,但不會調用h:commandButton的操作。
我試圖給組件添加顯式ID,試圖用h:form更改ice:form ..沒事。

請幫忙。爲什麼它需要h:commandButton,而不是ice:commandButton,爲什麼新的JSF 2.0的東西f:selectItems支持一個常規列表不起作用ice:selectOneMenu,只適用於h:selectOneMenu?怎麼了ICEfaces?爲什麼CDI不能按預期工作,而Seam 2也存在兩次對話的問題。ps2:如果我不導航到另一個視圖?cid=1不存在於URLICEfaces 2.0和h:commandButton方法未調用,使用ice:commandButton一切正常

回答

2

現在,王牌:FileEntry的和h:的commandButton,重ason爲什麼ice:commandButton不能被使用是因爲它是一個AJAX組件,並且瀏覽器不會在AJAX提交中上傳文件。即使使用HTML5,它也不是自動的,必須使用新的File和XmlHttpRequest API。在HTML4瀏覽器中,只有完整頁面,完整表單和提交纔會上傳文件內容,而只有h:commandButton以這種方式運行。有關詳細信息,你可以看到在靠近頁面頂部此解釋:

http://wiki.icefaces.org/display/ICE/FileEntry

隨着我國冰:組件,這是H的擴展型:組件,比如冰:selectOneMenu用於,他們是由於客戶需要豐富的客戶端組件,我們一直專注於新的高級組件環境,所以缺乏一些新的JSF 2功能。另外,重點在於維護與ice組件的向後兼容性,以便於將客戶從ICEfaces 1.8.x遷移到ICEfaces 2.x,更不用說改變這些組件的行爲。但我們仍在積極維護和改進ice:組件,並且很快將添加新功能。隨意在我們的Jira系統中創建任何改進請求,並對任何現有條目進行投票,因爲這指導我們的發展重點。

http://jira.icefaces.org/

  • 馬克·科萊特
1

我是來自ICEfaces組件團隊的Mark Collette,希望我能回答您的一些問題。

大多數問題似乎與組件本身的問題相關的CDI集成更多。我知道症狀會根據您使用的組件而改變,但我認爲這是因爲ice:組件使用AJAX,而h:組件不使用。很多時候,與其他框架的集成問題在AJAX交互中比在整頁GET/POST交互中更明顯。所以你的問題可能是由於我們的CDI集成或你的應用程序的配置。因此,請查閱我們有關使用帶有CDI的ICEfaces的文檔,如果您仍然遇到任何問題,我建議將詳細信息發佈到我們的論壇。

http://wiki.icefaces.org/display/ICE/Using+ICEfaces+with+CDI

http://www.icefaces.org/JForum/forums/list.page

[很抱歉,但這個論壇不會讓我張貼超過2個鏈接,所以我將我的消息的其餘部分分裂成另一篇文章,並希望將工作]

  • 馬克·科萊特
相關問題