2012-04-13 7 views
0

Ich benutze PrimeFaces 2.2. Ich benutze p: fileupplaod, wenn fileUpads dann update verwendet, ändere ich das Bild auf meiner Seite. Hier ist es.Wie p: ajax oncomplete Ereignis auf p: fileUpload zu verwenden. Fehler bei der Verwendung

<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> 

Was ich will Skript tun, ist, dass, wenn Upload abgeschlossen ist, und mit Ajax, wenn das Bild geändert wurde, dann will ich das Bild src-Attribut überprüfen. Hier ist mein Test() Funktion ist es nicht vollständig, aber hier ist es

function test(imageId) { 

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

Aber ich bin immer Fehler, dass

Eltern keine Instanz von ClientBehaviorHolder: org.primefaces.component.fileupload .FileUpload @ e39f71

Warum erhalte ich diesen Fehler? Was mache ich falsch?

Dank

Antwort

2

Die p:fileUpload Komponente ist der ClientBehaviorHolder Schnittstelle wie die Nachrichtenzustände nicht implementieren und daher ist keine Komponente, die den Ajax-Tag (siehe this post) enthalten.

Ich bin nicht vertraut mit der fileUpload-Komponente, aber ich habe in der Dokumentation von PF 3.2 gesehen, dass die p:fileUpload ein oncomplete Attribut hat.

+0

Hmm der Link, den Sie gepostet haben, hat einen Kommentar, dass 'Fileuploads und Ajax eine andere Geschichte sind. Verwenden Sie den erweiterten Modus, wenn Sie Ajax-Uploads wünschen. Was ist der erweiterte Modus? Können Sie mir einen anderen Weg geben, auf dem ich Änderungsereignisse im p: graphicImage erkennen kann? Wie immer, wenn p: graphicImage sich ändert, wird meine JavaScript-Funktion aufgerufen. Eigentlich habe ich ein h: datagrid, in dem es 4 Spalten gibt. 'name, fileupload, graphicImage, removeLink'. Standardmäßig hat p: graphicImage ein Standardbild. Ich möchte überprüfen, ob sich p: graphicImages ändert und irgendwie weiß ich es. Jemand hat mir einen Vorschlag gegeben, dass er unvollständig ist. – Basit

+0

Der erweiterte Modus ist für die Version PF 3.x. Der umgekehrte einfache Modus ist der Legacy-Modus, der sich wie der 2.x-Datei-Uploader verhält. Alles, was Sie brauchen, ist im neueren PF ;-(. Aber Sie haben eine serverseitige Aktionsmethode (den Upload-Listener) und Ihr p: graphicImage hat ein bohnengebundenes Wertattribut. Können Sie das nicht auf der Serverseite überprüfen? –

+0

Eigentlich möchte ich immer, wenn sich mein p: graphicImage ändert, überprüfen, ob p: graphicImage das Standardbild oder ein anderes Bild enthält.Wenn es ein Standardbild hat, muss ich den Entfernungslink ausblenden, sonst wird es angezeigt. Hier finden Sie, was ich will mit dem Code, den ich [Link] http://stackoverflow.com/questions/10125231/how-to-hide-element-in-responce-of-ajax-call#comment12979201_10125231 Ich benutze serverseitigen Code.Es ist Client oder Server-Seite Ich möchte nur, dass wenn meine p: graphicImage ändert, dann kann ich die entsprechende Maßnahme ergreifen. Danke – Basit

Verwandte Themen