Java 处理文件上载在Primefaces 6.2中不起作用

Java 处理文件上载在Primefaces 6.2中不起作用,java,jsf,primefaces,Java,Jsf,Primefaces,我最近将Primefaces版本更新为6.2,之后,我发现文件上传已停止工作。下面是我的代码: <p:fileUpload label="Choose (Max. 5Mb)" fileUploadListener="#{action.handleFileUpload}" mode="advanced" dragDropSupport="false" sizeLimit="6553600" fileLimit="1" allowTypes="/(\.|\/)(xls|xlsx)$/" upd

我最近将Primefaces版本更新为6.2,之后,我发现文件上传已停止工作。下面是我的代码:

<p:fileUpload label="Choose (Max. 5Mb)" fileUploadListener="#{action.handleFileUpload}" mode="advanced" dragDropSupport="false" sizeLimit="6553600"
fileLimit="1" allowTypes="/(\.|\/)(xls|xlsx)$/" update=":dataUploadForm,:dataUploadForm:masterDataPanel" />
如下图所示,当我单击“选择”按钮时,它会打开一个对话框,允许选择文件,当我选择文件并单击“确定”时,不会发生任何事情。但当我重新加载此页面,然后执行相同的操作时,文件将成功上载

我可以通过在Bean中创建一个数据类型为“UploadedFile”的变量,然后修改方法来解决这个问题,如下所示:

public void handleFileUpload(FileUploadEvent event) {
    try {
        UploadedFile uploadedFile = event.getFile();
        Bean.setUploadedFile(uploadedFile);
        // do some processing
    } catch (Exception ex) {
        LOGGER_.error("", ex);
    }
}

但是我不认为这是正确的方法,因为当并发用户上传重文件时,JVM可能会因为重负载而停止。我们有什么办法可以解决这个问题吗?

我不知道上面提到的为什么要解决这个问题,但我认为存储上传的文件是个坏主意。您应该立即从上传的文件中获取内容流并存储它,而不是上传的文件本身。
public void handleFileUpload(FileUploadEvent event) {
    try {
        UploadedFile uploadedFile = event.getFile();
        Bean.setUploadedFile(uploadedFile);
        // do some processing
    } catch (Exception ex) {
        LOGGER_.error("", ex);
    }
}