Jsf 2 Primefaces无法在模式advance jsf 2.0下工作

Jsf 2 Primefaces无法在模式advance jsf 2.0下工作,jsf-2,primefaces,camunda,Jsf 2,Primefaces,Camunda,我正在尝试使用JSF2.0中的PrimeFaces4.0上传文件。 在我配置pom.xml和web.xml之后,它可以使用mode=simple工作,我可以很好地选择一个文件。 我的问题是在mode=advance中上载多个文件,它在UI中显示上载面板,但javascript不工作。 我不会在我的jsf页面中添加任何js库来避免与primefaces js的冲突。 你有什么建议吗 如果我不能使用mode=advance的primefaces,那么在JSF2.0中我应该使用什么来上传多个文件呢 请

我正在尝试使用JSF2.0中的PrimeFaces4.0上传文件。 在我配置pom.xml和web.xml之后,它可以使用mode=simple工作,我可以很好地选择一个文件。 我的问题是在mode=advance中上载多个文件,它在UI中显示上载面板,但javascript不工作。 我不会在我的jsf页面中添加任何js库来避免与primefaces js的冲突。 你有什么建议吗

如果我不能使用mode=advance的primefaces,那么在JSF2.0中我应该使用什么来上传多个文件呢

请帮忙。 -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:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">

<h:head>
</h:head>
<h:body>
    <h:form enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{helloBean.upload}"
            mode="advanced" dragDropSupport="false" multiple="true"
            sizeLimit="100000" fileLimit="3"
            allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
    </h:form>
</h:body>
</html>
web.xml

<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>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

<!-- ############################################# -->
<!-- # File upload                               # -->
<!-- ############################################# -->
<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>
错误发生在文件下面。 http:/…/JavaServerFaces/javax.faces.resource/fileupload/fileupload.js.xhtml?ln=primefaces&v=4.0

我已经上传了mode=simple successful,但没有成功上传mode=advance。
我缺少什么?

我建议将表格提交给iframe。因为p:fileUpload mode=simple必须与提交表单一起使用。该方法可以解决浏览器上的页面重载问题

下面是示例代码。 XHTML

这是一个使用mode=advance进行多文件上传的示例

XHTML


p:简单模式下的文件上载不支持多个文件上载。您应该选择advance,以防多次上传。请发布所有使用mode=advance.hi的代码,我知道mode=simple不支持上传多个文件。我的意思是每次用户单击添加上载命令按钮时添加一个。它将重新加载页面并显示列表,这种方式也可以上载多个文件,但缺点是每次点击命令按钮都会重新加载页面。我如何做到这一点而不再次加载jsf页面?源代码我将在TimMORO上发布。嗨,我会考虑的。你能用mode=advance给我发一些简单的上传源代码吗?xhtml只需要有表单上传。我想参考一下。Thanks@JavaDeveloper尝试将commons fileupload、commons io分别更改为1.2.1、1.4版,因为这些版本已经过测试,并且已知正在使用PrimeFaces 4.0,还可以从依赖项中删除commons-fileupload-1.2-sources.jar、commons-io-2.4-sources.jar、PrimeFaces-4.0-sources.jar,上传并取消。我选择一个文件,点击上传按钮,然后它看起来像提交整个表单。在场景中,我有一个10个输入字段的表单,一个上传面板和一个提交表单。当我点击上传按钮时,它会提交整个表单并完成提交功能。我们能不能让上传按钮只处理上传文件的handleFileUpload?所以当我点击submit按钮时,就是提交整个表单的时候了。通常情况下,p:fileUpload In mode=advance不提交整个表单。如何设置更新属性。我很抱歉我的例子,它应该使用process=@this和process=@this来更新和处理自己。根据这2个属性,from不应该提交整个表单。祝你好运
<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>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

<!-- ############################################# -->
<!-- # File upload                               # -->
<!-- ############################################# -->
<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>
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>4.0</version>
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.1.7</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.1.7</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.el</groupId>
        <artifactId>el-ri</artifactId>
        <version>1.0</version>
    </dependency>

</dependencies>

<build>
    <finalName>JavaServerFaces</finalName>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
TypeError: $(...).addclass is not a function
$(this).addclass('ui-state-focus');
<h:form enctype="multipart/form-data" target="my_iframe">
    <p:fileUpload value="#{fileUploadView.file}" mode="simple" />
    <p:commandButton value="Submit" 
                     ajax="false" 
                     actionListener="#{fileUploadView.upload}" />        
</h:form>
<iframe name="my_iframe" style="display:none;"></iframe>
@ManagedBean
public class FileUploadView {

    private UploadedFile file;
    public void upload() {
        if(file != null) {
            System.out.println(file.getFileName());
            // TODO Auto-generated method stub           
        }
    }

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;
    }
}
<h:form enctype="multipart/form-data">          
    <p:fileUpload fileUploadListener="#{fileUploadView.handleFileUpload}" 
                  mode="advanced" 
                  dragDropSupport="false" 
                  multiple="true" 
                  update="@this"
                  process="@this" 
                  sizeLimit="100000" 
                  fileLimit="3" 
                  allowTypes="/(\.|\/)(gif|jpe?g|png)$/" /> 
</h:form>
@ManagedBean
public class FileUploadView {

    private UploadedFile file;

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;
    }

    public void handleFileUpload(FileUploadEvent event) {
        System.out.println(event.getFile().getFileName() + " is uploaded.");
        // TODO Auto-generated method stub 
    }
}