ตัวจัดการไฟล์ Primefaces 4 fileUpload ไม่ได้เรียกว่า [ซ้ำกัน]

ก่อนอื่น ฉันต้องบอกว่าฉันได้อ่านคำถามทั้งหมด (อย่างน้อยก็เยอะมาก :)) ที่นี่และในฟอรัม 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));
}

ถ้าฉันคลิกเลือก ฉันสามารถเลือกไฟล์ได้ แต่หลังจากนั้นไม่มีอะไรเกิดขึ้น ไม่ได้เรียกตัวจัดการ เนื่องจากไม่มีข้อความบันทึก ปุ่มอัปโหลดไฟล์จึงใช้งานไม่ได้ ฉันเคยใช้ส่วนประกอบนี้มาก่อนสำหรับปัญหาที่ซับซ้อนมากขึ้นโดยไม่มีปัญหา ดังนั้นฉันแน่ใจว่าฉันขาดสิ่งที่ชัดเจนไป

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ !


person omniflash    schedule 08.01.2014    source แหล่งที่มา
comment
เปิดคอนโซล Javascript ที่คุณชื่นชอบ...มีข้อผิดพลาดที่มีความหมายหรือไม่ ขอบเขตของถั่วสำรองของคุณคืออะไร?   -  person elbuild    schedule 08.01.2014
comment
:) ไม่สามารถแสดงความขอบคุณได้มากพอสำหรับคำใบ้คอนโซล js... มีข้อผิดพลาดทางไวยากรณ์ในข้อความที่ถูกแทนที่ใน invalidFileMessage... ขอบคุณมาก!   -  person omniflash    schedule 08.01.2014


คำตอบ (1)


ตรวจสอบให้แน่ใจว่าคุณมี PrimeFaces FileUpload Filter เป็นตัวกรองแรกใน web.xml:

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

หากคุณประสบปัญหากับตัวอัปโหลดไพรม์เฟซที่เป็นค่าเริ่มต้น คุณสามารถลองใช้การอัปโหลดไฟล์ทั่วไป:

<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>commons</param-value>
</context-param>

เรากำลังใช้การพึ่งพา Maven นี้:

<dependency>
   <groupId>commons-fileupload</groupId>
   <artifactId>commons-fileupload</artifactId>
   <version>1.3.1</version>
</dependency>

นอกจากนี้ ให้ลองวางไฟล์ที่อัปโหลดในรูปแบบของตัวเอง

person awilkinson    schedule 18.09.2015