首页 > 解决方案 > 未捕获的 TypeError:this.jq.fileupload 在使用 mode="advance" ajax 文件上传器时不是 Prime faces 4.0 中的函数

问题描述

我使用了 jsf 2.2.x 版本和 primefaces 4.0。我还使用了 jquery 版本,例如 1.10.1 和 2.1.4

<h:form id="uploadForm" enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{bean.handleFileUpload}"
                      mode="advanced" dragDropSupport="false"
                      update="messages"
                      sizeLimit="10000000"
                      fileLimit="3"
                      allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />

        <p:growl id="messages" showDetail="true" />
</h:form>

以及我使用如下标题。

<h:head>
    <title><h:outputText value="#{userBean.title}"/> - Dashboard</title>
    <meta http-equiv="keywords" content="xyz"/>
    <meta http-equiv="description" content="Dashboard"/>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
</h:head>

head 标签之间没有任何其他链接或脚本标签。只有样式标签。

web.xml

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>bootstrap</param-value>
</context-param>
<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>commons</param-value>
</context-param>
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/</url-pattern>
</servlet-mapping>
<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>51200</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>/tmp/</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

Bean.java

@ManagedBean(name = "bean")
@ViewScoped
public class Bean {
    public void handleFileUpload(FileUploadEvent event) {
        System.out.println("invoked");
        FacesMessage message = new FacesMessage("Succesful", 
        event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
}

上面的代码是从整个代码中提取的一部分。请帮我解决这个问题。谢谢!

标签: javascriptjavajqueryprimefacesjsf-2.2

解决方案


推荐阅读