Exception t:fileInputUpload上载文件时为空源
我正在使用tomahawk(1.1.11)和Mojarra(2.1.4)开发JSF应用程序。当我上传小文件(kb)时,它工作正常,但当我上传大约160Mb的文件时,它会发送一个错误null source 以下是我目前的代码:Exception t:fileInputUpload上载文件时为空源,exception,jsf,upload,null,tomahawk,Exception,Jsf,Upload,Null,Tomahawk,我正在使用tomahawk(1.1.11)和Mojarra(2.1.4)开发JSF应用程序。当我上传小文件(kb)时,它工作正常,但当我上传大约160Mb的文件时,它会发送一个错误null source 以下是我目前的代码: <h:form id="menuForm" enctype="multipart/form-data"> <h:outputLabel for="option" value="Acciones disponibles: " />
<h:form id="menuForm" enctype="multipart/form-data">
<h:outputLabel for="option" value="Acciones disponibles: " />
<h:selectOneMenu id="option"
value="#{uploadFile.option}">
<f:selectItem itemLabel="Seleccione una opción..." itemValue="null" />
<f:selectItems value="#{uploadFile.options}" />
<f:ajax render="@form" execute="@form" />
</h:selectOneMenu>
<h:panelGrid id="dataLoad" columns ="3"
rendered="#{uploadFile.option == 'Agregar información (sin validación).' ||
uploadFile.option == 'Cargar información completa (con validación).' ||
uploadFile.option == 'Cargar solo información errónea (con validación).'}">
<h:outputLabel for="upfile" value="Archivo: " />
<t:inputFileUpload id="upfile"
value="#{uploadFile.upFile}" />
<h:panelGroup/>
<h:panelGroup/>
<h:commandButton value="Continuar"
onclick="return confirmation()"
action="#{uploadFile.upload}" />
</h:panelGrid>
<h:panelGrid id="dataValidate" columns="3"
rendered="#{uploadFile.option == 'Validar información actual.'}">
<h:commandButton value=" Validar " action="#{uploadFile.validate()}"/>
</h:panelGrid>
<h:panelGrid id="listFiles" columns="3"
rendered="#{uploadFile.option == 'Visualizar todos los archivos.'}">
<t:tree2 id="tree" value="#{listFiles.treeRoot}"
var="node" varNodeToggler="t"
clientSideToggle="false">
<f:facet name="folder">
<h:panelGroup>
<t:graphicImage value="images/folderOpen.png"
rendered="#{t.nodeExpanded}"
border="0" />
<t:graphicImage value="images/folderClose.png"
rendered="#{!t.nodeExpanded}"
border="0" />
<h:outputText value="#{node.description}"
styleClass="nodeFolder" />
</h:panelGroup>
</f:facet>
<f:facet name="file">
<h:panelGroup>
<h:commandLink immediate="true"
action="#{listFiles.download(node.identifier)}">
<t:graphicImage value="images/file.png" border="0" />
<h:outputText value="#{node.description}" />
</h:commandLink>
</h:panelGroup>
</f:facet>
</t:tree2>
</h:panelGrid>
</h:form>
终于!我找到了问题的原因,但我真的不确定发生了什么,所以我想如果有人能帮我解决这个问题 首先,问题在于web.xml文件。最后,我有了类似的想法
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>/faces/*</servlet-name>
</filter-mapping>
MyFaceXtensionsFilter
/面孔/*
所以我从web.xml中删除了它,它上传文件时没有任何问题!我认为,服务器与这个
`过滤器映射
和servlet映射
相混淆。我希望有更多经验的人能帮助我(以及所有阅读此问题的人)解决这个问题。Rabbit您可以从您正在使用的apache commons fileupload jar中删除FileUploadBase文件
如果愿意,可以在其中设置最大文件和请求大小限制。这就是我在搜索任何配置项以自定义apaches File Upload 1.2.1 100mb限制之上的限制后克服大小限制所做的
你可以把src弄下来
只需修改源文件重新编译并覆盖fileupload jar中的现有类文件
确保您获得的源zip与您正在使用的文件上载版本完全对应,否则可能会出现问题请在您的问题中包含完整的stacktrace。我还添加了web.xml配置,可能我缺少tomahawk的一些配置。另一方面,我能够以Mb的顺序上载文件,但是我需要上传一个大约3.86 Gb的文件。我尝试上载大文件,但它没有发送任何错误/异常。
应该指向FacesServlet
的
,而不是表示URL模式。您已经有了正确的条目,因此请确实删除该错误条目。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name>
<param-value>false</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>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
<init-param>
<param-name>uploadMaxFileSize</param-name>
<param-value>5g</param-value>
</init-param>
<init-param>
<param-name>uploadThresholdSize</param-name>
<param-value>500m</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>/faces/*</servlet-name>
</filter-mapping>
</web-app>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>/faces/*</servlet-name>
</filter-mapping>