ก่อนอื่น ฉันต้องบอกว่าฉันได้อ่านคำถามทั้งหมด (อย่างน้อยก็เยอะมาก :)) ที่นี่และในฟอรัม Primefaces เกี่ยวกับปัญหาตัวอัปโหลดไฟล์
การกำหนดค่าของฉัน:
ไพรม์เฟส 4
เจเอสเอฟ 2.2
ฤดูใบไม้ผลิ
อาปาเช่ ทอมแคท 7
มาเวน
ฉันกำลังแปลงโปรเจ็กต์ Richfaces เป็น Primefaces และฉันติดอยู่กับองค์ประกอบ fileUpload ที่ไม่ได้เรียกใช้เมธอดตัวจัดการ
ฉันได้ลองแล้ว (แม้ว่าฉันรู้ว่าจาก Primefaces 4 มันไม่จำเป็น) ใส่ตัวกรองใน web.xml ฉันได้ลองโดยไม่มีตัวกรองแล้ว ฉันมีตัวกรองความปลอดภัยแบบสปริงและตัวกรองภาษา และอื่นๆ แต่ PF เป็นตัวกรองแรก ฉันได้ลองตั้งค่าผู้มอบหมายงานเป็น FORWARD แล้ว
ฉันมีการพึ่งพาที่จำเป็นทั้งหมดใน Maven (ทั่วไป - ฉันรู้ว่าตั้งแต่เวอร์ชัน 4 ไม่จำเป็น แต่ถึงกระนั้นฉันก็ลองแล้ว)
ส่วน 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>
ถั่วสำรอง:
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));
}
ถ้าฉันคลิกเลือก ฉันสามารถเลือกไฟล์ได้ แต่หลังจากนั้นไม่มีอะไรเกิดขึ้น ไม่ได้เรียกตัวจัดการ เนื่องจากไม่มีข้อความบันทึก ปุ่มอัปโหลดไฟล์จึงใช้งานไม่ได้ ฉันเคยใช้ส่วนประกอบนี้มาก่อนสำหรับปัญหาที่ซับซ้อนมากขึ้นโดยไม่มีปัญหา ดังนั้นฉันแน่ใจว่าฉันขาดสิ่งที่ชัดเจนไป
ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ !