Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File upload PrimeFaces 4.0文件上载适用于Mojarra 2.2,但不适用于MyFaces 2.2_File Upload_Jsf 2_Primefaces_Myfaces - Fatal编程技术网

File upload PrimeFaces 4.0文件上载适用于Mojarra 2.2,但不适用于MyFaces 2.2

File upload PrimeFaces 4.0文件上载适用于Mojarra 2.2,但不适用于MyFaces 2.2,file-upload,jsf-2,primefaces,myfaces,File Upload,Jsf 2,Primefaces,Myfaces,PrimeFaces 4.0最终文件上传元素有一个有趣的问题。 我正在尝试运行: PrimeFaces 4.0决赛 Apache MyFaces 2.2.0-beta Tomcat 7.0.27 我现在有一个非常简单的设置 XHTML页面: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.

PrimeFaces 4.0最终文件上传元素有一个有趣的问题。 我正在尝试运行:

  • PrimeFaces 4.0决赛
  • Apache MyFaces 2.2.0-beta
  • Tomcat 7.0.27
我现在有一个非常简单的设置

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://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:form>
    <p:fileUpload
        fileUploadListener="#{fileUploadController.handleFileUpload}"
        mode="advanced" update="messages" sizeLimit="100000"
        allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />

    <p:growl id="messages" showDetail="true" />
</h:form>
</h:body>
</html>
当选择一个文件并上传它时,不会发生任何事情

上载提交成功,响应如下:

<?xml version="1.0" encoding="UTF-8"?><partial-response><changes><update id="j_id__v_0:javax.faces.ViewState:1"><![CDATA[2C7ZmtwSmrlbgI/wJLI2CLBaMOQP9R/pYkIXpHlXkhSKIhtfFM0sx0HmL8o9MQY2MdHXg4t1vUjJbUYkAdFBmOQUaFy7hFhPr34Za4hOuLW4CPNx]]></update></changes></partial-response>

更新 似乎MyFaces2.2.0-beta在使用Servlet3.x中的PartAPI时出现了问题

使用PrimeFaces 3.x required的
web.xml
过滤器和commons file upload&commons io jars作为解决方案的一部分,但是,我们还需要向
web.xml
添加以下上下文参数,否则过滤器将被忽略:

<context-param>
  <param-name>primefaces.UPLOADER</param-name>
  <param-value>commons</param-value>
</context-param>

primefaces.UPLOADER
平民
这将迫使PrimeFaces使用commons库来解决问题

尽管如此,如果有人有任何想法,我仍然想知道为什么MyFaces似乎不能使用servlet部分API。我怀疑这可能与我的Tomcat版本有关,因为我只在7.0.27上,但我对此表示怀疑



web.xml
文件中提及以下过滤器,用于使用PrimeFaces上载文件

<!-- PrimeFaces FileUpload Filter -->
<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>

PrimeFaces文件上载筛选器
org.primefaces.webapp.filter.FileUploadFilter
PrimeFaces文件上载筛选器
Facesservlet
并将jar添加到lib文件夹。PrimeFaces需要以下JAR用于文件上载

,,

最近发现了一个类似的问题,在中有更好的描述。这是一个与webkit浏览器相关的问题,只有当ajax响应足够大时才会出现。它已经被修复。

udaykiran pulipati的回答促使我在我的项目中将commons-fileupload-1.2.2.jar替换为commons-fileupload-1.3.jar,但这并没有解决我的问题,因为我正在使用MyFaces 2.2、PrimeFaces Elite 4.0.8和TomEE 1.6.1-snapshot

另外,根据udaykiran pulipati的回答,我已经在几个月前将PrimeFaces文件上传过滤器配置添加到了我的web.xml中

所以,我看了PrimeFaces4.0用户指南,发现了一些可以在web.xml中指定的“新”内容。因此,我在web.xml中添加了以下内容:

<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>commons</param-value>
</context-param>    

primefaces.UPLOADER
平民

最后,PrimeFaces(Elite)4.0.x FileUpload与MyFaces 2.2配合使用。

在他们的用户指南中说,如果我想使用commons FileUpload jar而不是servlet 3.0 api,我只需要这些过滤器。我还想指出的是,对于Mojarra,文件上传在没有过滤器的情况下可以正常工作,jarsIt不应该是MyFaces的问题,因为首先我们讨论的是primefaces组件,对吗?primefaces首先做什么来覆盖JSF?谁知道呢,这是我无法控制的。你应该问PrimeFaces的伙计们这个问题。实际上,它似乎与myfaces有关,请参阅stackoverflow.com/questions/21948228/how-to-get-jsf-file-upload-to-work-on-tomee-1-6
<!-- PrimeFaces FileUpload Filter -->
<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>
<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>commons</param-value>
</context-param>