PrimeFaces 8 <p:fileUpload> 的工作方式与 PrimeFaces 7 不同

Ale*_* Mi 3 migration jsf primefaces

我最近从 PrimeFaces 7 迁移到 PrimeFaces 8,但该<p:fileUpload组件在 PrimeFaces 8 中没有按预期工作。这是最小的例子:

我的脸:

<!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:p="http://primefaces.org/ui"
          lang="en">

          <h:head>
           <f:facet name="first">
               <meta http-equiv="X-UA-Compatible" content="IE=edge" />
               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
               <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
               <meta name="apple-mobile-web-app-capable" content="yes" />
           </f:facet>
          </h:head>
          <h:body>
                <h:outputStylesheet name="primeicons/primeicons.css" library="primefaces"/>

                <div class="ui-g ui-fluid"> 
                    <div class="card card-w-title">
                        <h:form id="inseratForm" enctype="multipart/form-data">  
                                <div class="card-title">Objekt anlegen</div> 
                                <p:growl id="messages" autoUpdate="true" showDetail="true" />  
                                <p:fileUpload 
                                        fileUploadListener="#{objAnlBean.handleFileUpload}"
                                        label="Select images" 
                                        auto="true"
                                        multiple="true"
                                        dragDropSupport="true"
                                        sizeLimit="100000000" 
                                        invalidSizeMessage=""
                                        invalidFileMessage="Invalid File"
                                        fileLimitMessage=""
                                        validatorMessage="Invalid File Type"
                                        showButtons="false"
                                        update="@form:uploadedImagesDiv"
                                        allowTypes="/(\.|\/)(gif|jpe?g|png)$/i">

                                        Upload Images

                                     <h:panelGroup id="uploadedImagesDiv" layout="block"/>
                                 </p:fileUpload>
                         </h:form>
                    </div>
                </div>      
        </h:body>
       </html>
Run Code Online (Sandbox Code Playgroud)

支持豆:

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

@Named("objAnlBean")
@javax.faces.view.ViewScoped
public class ObjAnlBean implements Serializable {

    private static final long serialVersionUID = 1L;

    public void handleFileUpload(FileUploadEvent event) {
        UploadedFile uploadedFile = event.getFile();
        String fileName = uploadedFile.getFileName();
        String contentType = uploadedFile.getContentType();
        System.out.println("fileName = " + fileName + ";contentType =  " + contentType);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的期望是,每当我在 handleFileUpload() 方法中放置断点并尝试从前端上传文件时,都会调用 handleFileUpload() 方法。这在 PrimeFaces 7 中按预期工作,但在 PrimeFaces 8 中无效。

请帮忙!

Ale*_* Mi 5

感谢下方评论中的小伙伴们!

fileUploadListener的属性<p:fileUpload在 PrimeFaces 8 中重命名为 justlistener

迁移指南中显然也记录了此更改。这样,问题就解决了/结束了。