我在尝试使用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搜索,并且找不到有类似问题的人也没有太多运气。
任何可能导致此问题的想法?
答案 0 :(得分:1)
javax.faces.el.EvaluationException:/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。基本上有两种方法可以解决这个问题:
引用为null
时跳过访问/调用。所以只有在保证不是null
时才会这样做。
null
通过实例化确保它永远不会是if (someObject != null) {
someObject.someMethod();
}
。
null
正确的解决方案取决于唯一的功能要求和代码的上下文。