2012-04-13 33 views
0

我正在使用PrimeFaces 2.2。我使用p:fileuplaod,當fileUploads然後使用更新我改變我的網頁上的圖像。這裏是。如何在p:fileUpload上使用p:ajax oncomplete事件。使用時出現錯誤

<p:fileUpload id="countryFlag" widgetVar="uploader" description="Image" 
     update="Flag" allowTypes="*.jpg;*.png;*.gif;*.jpeg;" auto="true" 
     fileUploadListener="#{countryPages_Detail.imageUpload}"> 

    <p:ajax oncomplete="test('Flag')" /> 

</p:fileUpload> 

<p:graphicImage id="Flag" value="#{countryPages_Detail.imagePath}" 
     width="80" height="50" cache="false"> 

    <f:event type="preRenderComponent" listener="#{countryPages_Detail.putImage}" />             

</p:graphicImage> 

我想用腳本做的是,當上傳完成,當圖像被改變使用AJAX,然後我想檢查圖像src屬性。這裏是我的測試()函數,它是不完整的,但在這裏它是

function test(imageId) { 

    var imgId = imageId; 
    var image = $("#saarcImagesTable tr").find("img[id='imageId']") 
    alert("Image change"); 
} 

但是我得到錯誤

家長不ClientBehaviorHolder的一個實例:org.primefaces.component.fileupload .FileUpload @ e39f71

爲什麼我得到這個錯誤?我究竟做錯了什麼?

由於

回答

2

p:fileUpload部件不實現ClientBehaviorHolder接口作爲消息狀態,並且因此是一個可包含在AJAX標籤(見this post)沒有組件。

我不熟悉fileUpload組件,但是我在PF 3.2的文檔中看到p:fileUpload有一個oncomplete屬性。

+0

嗯你發佈的鏈接有一個評論,'fileuploads和ajax是一個不同的故事。如果您想要上傳ajax,請使用高級模式。什麼是高級模式?你能告訴我任何其他方式,通過我可以檢測p:graphicImage中的變化事件嗎?就像每當p:graphicImage改變,然後我的javascript函數就會調用。其實我有一個h:有4列的datagrid。 'name,fileuplload,graphicImage,removeLink'。默認情況下,p:graphicImage有一個默認圖像。我想檢查,如果p:graphicImages改變然後以某種方式我知道。有人給我建議使用oncomplete。 – Basit 2012-04-13 07:57:42

+0

高級模式適用於PF 3.x版本。相反的簡單模式是像2.x文件上傳器一樣行事的傳統模式。因此,所有你需要的是在新的PF ;-(。但是你有一個服務器端的操作方法(上傳監聽器),你的p:graphicImage有一個bean綁定值屬性,你不能在服務器端檢查嗎? – 2012-04-13 08:03:38

+0

其實我想要做的是每當我p:graphicImage改變,然後我必須檢查p:graphicImage是否包含默認圖像或任何其他圖像。如果它有默認圖像,那麼我必須隱藏刪除鏈接,否則它顯示。在這裏,你可以找到我想要的代碼,我張貼[鏈接] http://stackoverflow.com/questions/10125231/how-to-hide-element-in-responce-of-ajax-call#comment12979201_10125231。這裏我正在使用服務器端代碼,無論是客戶端還是服務器端,我只是希望當我的p:graphicImage更改時,我可以採取適當的操作。 – Basit 2012-04-13 09:14:23

相關問題