Primefaces fileUpload Listener不会在wildfly服务器上调用

时间:2017-05-09 08:52:43

标签: primefaces jsf-2.2 wildfly-10 apache-commons-fileupload

我在我的代码中添加了primeFaces fileUpload,它在webLogic 12.2服务器上工作正常但是当我将服务器更改为wildFly 10.0.1时,fileUpload Listener不再调用我想知道是什么原因并搜索此问题而无济于事

这是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>

那是我的xhtml代码

<p:column headerText="#{msgs.label_uploadFile}" >
    <p:fileUpload id="upload" label="#{msgs.label_uploadFile}" 
     fileUploadListener="#{attachmentsInquiryBean.handleFileUpload}" 
     mode="advanced" auto="true"/>
</p:column>

这是监听器功能

public void handleFileUpload(FileUploadEvent event) {
  // do something
 }

我还在我的wWEB-INF / lib文件夹中添加了两个jar:

公地文件上传-1.3.jar

公地-IO-2.4.jar

3 个答案:

答案 0 :(得分:0)

以下是如何使用primefaces上传文件的示例,您不需要commons-fileupload-1.3.1.jar和commons-io-2.4.jar;此外,您无需更改web.xml,有关详细信息,请参阅此How to upload file in primefaces

java代码:

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import org.primefaces.model.UploadedFile;
@ManagedBean
public class FileUploadView {
    private UploadedFile file;
    public UploadedFile getFile() {
        return file;
    }
    public void setFile(UploadedFile file) {
        this.file = file;
    }
    public void upload() {
        if(file.getSize() > 0) {
            FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
else{
    FacesMessage message = new FacesMessage("Not Succesful", "file is not uploaded");
            FacesContext.getCurrentInstance().addMessage(null, message);
}
    }
}

xhtml代码:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
<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}" />
</h:form>
  </h:body>
</html>

答案 1 :(得分:0)

我在Wildfly 10.x中使用PF 6.1也看到过相同的情况。

Wildfly上fileUpload.getFileUploadListener() is null的方法表达式。

我的解决方法是在FileUpload组件上使用绑定并手动设置有效的方法表达式。

答案 2 :(得分:0)

我在tomcat上遇到了同样的问题,并通过在META-INF / context.xml中添加 allowCasualMultipartParsing =“ true” 来解决了这个问题:

<Context allowCasualMultipartParsing="true">
</Context>

希望有帮助。