RichFaces文件上载会抛出NullPointerException

时间:2010-12-29 23:20:47

标签: java jsf richfaces

我在尝试使用RichFaces上传文件时遇到了很多麻烦(我对我目前正在使用的许多技术都很陌生,这肯定会使问题复杂化。)

我可以将文件上传组件添加到页面中,但每当我尝试上传图片时它都会给我一个错误。

我得到的错误如下(至少是它的开头):

10:10:51,029 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] /profile.xhtml @49,25 fileUploadListener="#{editProfileAction.uploadListener}": java.lang.NullPointerException: javax.faces.el.EvaluationE
xception: /profile.xhtml @49,25 fileUploadListener="#{editProfileAction.uploadListener}": java.lang.NullPointerException
        at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73) [:1.1.15.B1]
        at org.richfaces.component.UIFileUpload.broadcast(UIFileUpload.java:190) [:3.3.3.CR1]
        at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329) [:3.3.3.CR1]
        at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:302) [:3.3.3.CR1]
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261) [:3.3.3.CR1]
        at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:417) [:3.3.3.CR1]

我不确定为什么会这样。我已经完成了Google搜索,并且找不到有类似问题的人也没有太多运气。

任何可能导致此问题的想法?

1 个答案:

答案 0 :(得分:1)

  

javax.faces.el.E​​valuationException:/profile.xhtml @ 49,25 fileUploadListener =“#{editProfileAction.uploadListener}”:java.lang.NullPointerException
  at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73)[:1.1.15.B1]

绑定到#{editProfileAction.uploadListener}的{​​{1}}的方法,在第49行,从字符25开始,抛出了profile.xhtml。您应该在堆栈跟踪中进一步查看详细信息,以“由...引起”或“根本原因”(您在问题中省略)开头。该部分的第一行应该包含在NullPointerException托管bean后面的支持bean类的uploadListener()方法中抛出NPE的确切行号。转到代码中的这个行号,你会看到类似的东西:

#{editProfileAction}

准确地说,使用点someObject.someMethod(); 运算符专注于字段/方法访问/调用。此类线上的NPE仅表示使用点.运算符的对象引用为.。您无法使用指向null的对象引用上的点.运算符访问字段或调用方法。它只会抛出一个NPE。基本上有两种方法可以解决这个问题:

  1. 引用为null时跳过访问/调用。所以只有在保证不是null时才会这样做。

    null
  2. 通过实例化确保它永远不会是if (someObject != null) { someObject.someMethod(); }

    null
  3. 正确的解决方案取决于唯一的功能要求和代码的上下文。