使用<f:ajax>时,h:inputFile中的“ TypeError:partialResponse未定义”

时间:2019-01-21 17:29:46

标签: java jsf java-ee jsf-2 jsf-2.2

我想使用ajax上传文件。但是这样做时,我在选择文件时在浏览器控制台中收到以下错误。

TypeError:jsf.js中未定义partialResponse。

使用ajax的其他输入不会发生这种情况,只有inputFile会发生这种情况。

Picture of the error

最近我在JBOSS EAP 6.3中更新到jsf 2.2.14。 servlet是3.0(我在web.xml中选中了它)。

我要上传文件,请遵循以下示例:https://jsflive.wordpress.com/2013/04/23/jsf22-file-upload/

这在xhtml中:

            <h:form id="formTest" enctype="multipart/form-data">
                <h:inputFile id="file" value="#{manejador.maestroFormularios.maestroArchivos.archivoTemporal}" >
                    <f:ajax execute="@this" render=":formTest"/>
                </h:inputFile>
                <h:commandButton value="Upload" action="#{manejador.maestroFormularios.maestroArchivos.cargarArchivoEnLista()}"/>
            </h:form>

在后备bean中,我使用Part:类型的archivoTemporal:

public class MaestroArchivos implements Serializable {

private Part archivoTemporal;

2 个答案:

答案 0 :(得分:0)

我能够通过从f:ajax中删除嵌套的h:inputFile来解决此问题。并且我还在servlet标记的web.xml文件中添加了以下代码。

<multipart-config>
        <location>/tmp</location>
        <max-file-size>20848820</max-file-size>
        <max-request-size>418018841</max-request-size>
        <file-size-threshold>1048576</file-size-threshold>
    </multipart-config> 

感谢您的支持。

答案 1 :(得分:0)

在我们的例子中,这是权限问题。

Apache Tomcat 8.x

                                                    your [.war]
root   root /path/to/tomcat/work/Catalina/localhost/ROOT/

Tomcat与userowner用户一起运行,但是ROOT的路径为root

sudo chown userowner /path/to/tomcat/work/Catalina/localhost/ROOT[.war]/ -R
sudo chgrp usergroup /path/to/tomcat/work/Catalina/localhost/ROOT[.war]/ -R