【问题标题】:Primefaces file upload not working [duplicate]Primefaces文件上传不起作用[重复]
【发布时间】:2017-07-26 09:09:42
【问题描述】:

试图让 jsf fileUploadListener 工作似乎没有做任何事情,试图在点击 {fileUploadView.handleFileUpload} 时获得一个打印行似乎没有发生任何事情。 UI 在 localhost:8080/index.jsf 上加载正常,单击选择文件后我选择一个文件,然后按下上传按钮后没有任何反应,日志或打印行中没有错误,从显示的角度打印所有内容似乎很好。

index.xhtml

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

        <link type="text/css" rel="stylesheet" href="/project/faces/javax.faces.resource/theme.css?ln=primefaces-glass-x" />

        <f:view>
            <h:head>
                <meta charset="utf-8" />

                <title>test</title>
            </h:head>


            <h:body>
                <h:form>
                    <p:fileUpload fileUploadListener="#{fileUploadView.handleFileUpload}" mode="advanced" dragDropSupport="true"
                                  update="messages" sizeLimit="100000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />

                    <p:growl id="messages" showDetail="true" />
                </h:form>
            </h:body>
        </f:view>
    </html>

FileUploadView.java (bean)

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

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

@ManagedBean
@ViewScoped
public class FileUploadView {

    private UploadedFile uploadedFile;

    public void handleFileUpload(FileUploadEvent event) {
        System.out.println("handel file upoad =-=-=-=-=-");
        FacesMessage message = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public UploadedFile getUploadedFile() {
        System.out.println("uploading file get =-=-=-=");
        return uploadedFile;
    }

    public void setUploadedFile(UploadedFile uploadedFile) {
                System.out.println("uploading file set =-=-=-=");

        this.uploadedFile = uploadedFile;
    }


}

【问题讨论】:

    标签: jsf file-upload primefaces


    【解决方案1】:

    在表单中添加 enctype。

    中的 enctype="multipart/form-data" 用
    替换你

    【讨论】:

    • 请编辑您的答案(格式明智)
    【解决方案2】:

    这是我在您的代码中看到的两个问题 第一个是你应该使用

    <h:form enctype="multipart/form-data">
        your code here
    </h:form>
    

    并将 ajax=false 属性添加到 commandButton

    <h:form enctype="multipart/form-data">
        <p:growl id="messages" showDetail="true" />
    
    
            <p:fileUpload value="#{fileUploadView.file}" mode="simple" skinSimple="true"/>
    
            <p:commandButton value="Submit" ajax="false" actionListener="#{fileUploadView.upload}" disabled="true" />
        </h:form>
    

    官方文档https://www.primefaces.org/showcase/ui/file/upload/basic.xhtml

    无关我只是注意到一些有趣的事情,上传在 primefaces 官方展示 xP 上不起作用

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 2017-10-03
      • 2014-05-15
      • 2018-01-18
      • 1970-01-01
      • 2017-07-23
      • 2018-03-20
      相关资源
      最近更新 更多