Fileupload和PrettyFaces以及JSF 2.2

Kia*_*ian 2 jsf file-upload prettyfaces jsf-2.2

我尝试过以下解决方案: Primefaces FileUpload with PrettyFaces和JSF 2.2.3

但它不适用于少数文件(在tomcat 7.0.50下测试).

其中一个文件是:http: //ftp.carnet.hr/misc/apache//xerces/j/source/Xerces-J-src.2.11.0-xml-schema-1.1-beta.zip

有人为这个问题找到了更好的解决方案(除了删除urlmapping)吗?

编辑:没有错误/异常抛出!文件显示在PrimeFaces FileUpload中,但是不会触发监听器!JSF2.2 inputFile也不起作用!

Kia*_*ian 5

我找到了解决问题的方法.

问题是用于上载的表单的action属性.PrettyFaces将action属性更改为新的pretty-url.

如果将action属性更改为真实URL(具有.xhtml,.jsf,...的那个),则fileupload将再次起作用,并且不再需要context-file(tomcat)中的allowCasualMultipartParsing ="true"条目.

要更改路径,请将此脚本放入视图(您的xhtml文件;需要jquery):

<script type="text/javascript">
     $(document).ready(function() {
         $("form[enctype='multipart/form-data']").attr("action","#{request.contextPath}/test/fileupload.xhtml");
    });
</script>
Run Code Online (Sandbox Code Playgroud)

现在fileupload适用于我的所有文件,包括那些无效的文件(即使使用allowCasualMultipartParsing ="true"解决方案).

使用Primefaces4.0 FileUpload-Component测试.

编辑:
还有其他更好的解决方案吗?

  • 我也遇到了同样的问题,我也看到了这个问题。我使用的是 JSF 2.2.x,在这种情况下,请使用带有前缀“a”的 Pastrought。在表单中,我添加了操作和您在脚本中放入的 url。示例: &lt;h:form a:action="#{request.contextPath}/test/fileupload.xhtml""&gt;&lt;/h:form&gt; (2认同)