【问题标题】:FacesContext.getCurrentInstance returns null in PrimeFaces Dialog Framework demoFacesContext.getCurrentInstance 在 PrimeFaces 对话框框架演示中返回 null
【发布时间】:2025-12-14 10:15:01
【问题描述】:

我想在 GlassFish 4.1 和 NetBeans 8.0.2 上运行 Dialog Framework - Data 的 ShowCase 演示。我从展示中复制/粘贴代码。但是我在这一行遇到了 NullPointerException:

FacesContext.getCurrentInstance().addMessage(null, message);

错误代码

java.lang.NullPointerException
    at Beans.DFView.onCarChosen(CalculateBean.java:27)

我读到我必须有另一个 servlet 应用程序来与客户端通信,但我找不到任何教程链接。

我读到我必须将此代码添加到 faces-config.xml:

<application>
    <action-listener>org.primefaces.application.DialogActionListener</action-listener>
    <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>
    <view-handler>org.primefaces.application.DialogViewHandler</view-handler>
</application>

链接到 Natalia Zoń 帖子:Primefaces JSF null returned from RequestContext.getCurrentInstance() 在这里我读到一些关于推送服务器的信息:Developer.am

【问题讨论】:

    标签: jsf jsf-2 primefaces nullpointerexception facescontext


    【解决方案1】:

    首先,我的错误是我的代码很脏,因为我尝试了很多解决方案,开发 Web 应用程序你必须比在桌面应用程序上做的东西干净 2 倍,因为这种类型的应用程序更敏感。

    另外,看了http://balusc.omnifaces.org/2006/06/communication-in-jsf.html#AccessingTheFacesContextInsideHttpServletOrFilter之后,我打算学习一下servlet技术,并尝试去实现它。

    PS:解决方案很简单,清理你的代码,将它添加到你的 faces-config 中:

    <application>
        <action-listener>
            org.primefaces.application.DialogActionListener
        </action-listener>
        <navigation-handler>
            org.primefaces.application.DialogNavigationHandler
        </navigation-handler>
        <view-handler>
            org.primefaces.application.DialogViewHandler
        </view-handler>
    </application>
    

    它必须运行。 如果没有,请创建新的 WebApplication 项目,并从展示中复制/粘贴所有代码,如果没有,则必须运行,重播。

    【讨论】: