Pertama-tama, saya harus mengatakan, bahwa saya telah membaca semua (setidaknya banyak :)) pertanyaan di sini dan di forum primefaces tentang masalah pengunggah file.
Konfigurasi saya:
Wajah Utama 4
JSF 2.2
Musim semi
Apache Tomcat 7
Maven
Saya mengonversi proyek richfaces menjadi primefaces, dan saya terjebak dengan komponen fileUpload yang tidak memanggil metode handler.
Saya telah mencoba (meskipun saya tahu bahwa dari Primefaces 4 tidak perlu) memasang filter di web.xml. Saya juga sudah mencoba tanpa filter. Saya memiliki filter keamanan pegas dan filter bahasa, tetapi PF adalah yang pertama. Saya juga mencoba mengatur operator ke FORWARD.
Saya memiliki semua dependensi yang diperlukan di Maven (yang umum - saya tahu bahwa dari versi 4 itu tidak diperlukan, namun demikian saya mencobanya)
Bagian xhtml:
<h:form enctype="multipart/form-data">
... /* not relevant code here */ ...
<p:graphicImage value="#{systemParamsController.image}"
id="logo" />
<p:fileUpload
fileUploadListener="#{systemParamsController.listener}"
fileLimit="1" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
uploadLabel="#{msg['button.upload.jpg']}"
cancelLabel="#{msg['button.cancel']}"
invalidFileMessage="alert('#{msg['upload.invalidtype']}');"
update="logo" mode="advanced">
</p:fileUpload>
<p:growl id="messages" showDetail="true" />
</h:panelGrid>
</h:panelGroup>
<p:commandButton value="#{msg['button.save']}" onclick="this.disabled=true" oncomplete="this.disabled=false"
action="#{systemParamsController.save}" styleClass="qs-button"
ajax="false" />
</h:panelGrid>
</p:panel>
</center>
</h:form>
Kacang pendukung:
public synchronized void listener(FileUploadEvent event) throws Exception {
logger.debug("uploadListener!");
UploadedFile item = event.getFile();
getModel().getCustomer().setLogo(imageResizer.doResize(item.getContents(), 30, Side.HEIGHT));
}
Jika saya mengklik pilih, saya dapat memilih file, tetapi setelah itu tidak terjadi apa-apa. Handler tidak dipanggil, karena tidak ada pesan log, tombol upload file tidak aktif. Saya telah menggunakan komponen ini sebelumnya untuk masalah yang lebih kompleks tanpa masalah, jadi saya yakin saya melewatkan sesuatu yang jelas.
Terima kasih sebelumnya atas bantuan apa pun!