com.sun.faces.context.flash.ELFlash.getFlash中的java.lang.NullPointerException

时间:2011-12-07 01:30:44

标签: java jsf jsf-2 heroku nullpointerexception

我创建了一个简单的JSF2.0应用程序,它在我的计算机上运行良好,但是当我尝试在Heroku中运行它时,我收到此错误:

HTTP ERROR 500

Problem accessing /login.xhtml. Reason:

    Server Error

Caused by:

java.lang.NullPointerException
    at com.sun.faces.context.flash.ELFlash.getFlash(ELFlash.java:93)
    at com.sun.faces.context.flash.ELFlash.getELFlash(ELFlash.java:124)
    at com.sun.faces.context.flash.ELFlash.doPostPhaseActions(ELFlash.java:722)
    at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:108)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:311)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:481)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:940)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:349)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:904)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
    at java.lang.Thread.run(Thread.java:636)

那么,解决这个问题的方法是什么? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

java.lang.NullPointerException
    at com.sun.faces.context.flash.ELFlash.getFlash(ELFlash.java:93)
    at com.sun.faces.context.flash.ELFlash.getELFlash(ELFlash.java:124)

我不承认ELFlash#getELFlash()方法是最近Mojarra实现的一部分。也许你正在使用一个非常早期的2.0.0实现,它有一个与此相关的bug。升级到最新版本可以解决这个问题。


  

但注释问题在Heroku中仍然存在

javax.el.PropertyNotFoundException: /login.xhtml @15,55 value="#{user.name}": Target Unreachable, identifier 'user' resolved to null 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100‌​) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(Html‌​BasicInputRenderer.java:95) 
如果未正确声明faces-config.xml符合JSF2规范,则JSF2注释将失败。确保<faces-config>根声明看起来像这样:

<faces-config
    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-facesconfig_2_0.xsd"
    version="2.0">

    <!-- config here -->

</faces-config>