java - Richfaces 文件上传错误

标签 java jsp jsf richfaces

我尝试使用 rich:fileupload componenet 上传文件。当我尝试上传文件时,出现错误, 错误是

Aug 24, 2011 9:41:19 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
        at org.richfaces.renderkit.FileUploadRendererBase.doDecode(FileUploadRendererBase.java:140)
        at org.ajax4jsf.renderkit.RendererBase.decode(RendererBase.java:75)
        at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:764)
        at javax.faces.component.UIInput.decode(UIInput.java:719)
        at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1006)
        at javax.faces.component.UIInput.processDecodes(UIInput.java:633)
        at javax.faces.component.UIForm.processDecodes(UIForm.java:203)
        at org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:392)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
        at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:409)
        at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:365)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:679)

请帮我解决这个问题。

最佳答案

堆栈跟踪提示您正在使用 RichFaces 3.3 和 Tomahawk 1.x。这两个组件库都提供文件上传组件,并使用特殊的 Filter 从请求正文中提取上传的文件。 。堆栈跟踪显示 Tomahawk 在 RichFaces 之前解析请求正文。

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:365)
...
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)

请求体一旦被解析,就不能再被解析。因此,RichFaces 无法从请求正文中提取上传的文件。 NullPointerException你所面临的只是不可预见的后果(RichFaces 的人应该抛出一个更明确的异常,比如 IllegalStateException ,其中包含消息“请求正文中缺少上传的文件”或类似的消息,但是唉) .

如果您想使用 RichFaces 文件上传功能,那么您确实必须删除 Tomahawk 的 ExtensionsFilter 来自web.xml 。您只会错过<t:inputFileUpload>特定外观组件的功能和一些次要功能(脚本/样式表)。其他战斧组件应该保持正常工作。

关于java - Richfaces 文件上传错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169660/

相关文章:

java - 在 Java 中,哪种集合对于数据网络来说性能最高?

java - 如何存储密码?

java - 正则表达式在字符串中查找@符号

string - JSP中如何求整数的长度?

JavaScript 和 Java 在同一个 for 循环中,这可能吗?

java - 用于重定向到页面的 JSF 链接

java - Jsf2 View 参数和 viewscoped beans

jsf - p :schedule not rendering when its slotLabelFormat attribute is specified

java - 具有递归和回溯功能的数独求解器

Java向JCalendar添加图标