MyFaces Facelet 包含中的 NullPointerException

2023-12-15


我正在尝试从以下位置迁移简单的 JSF2.2 原型Mojarra2.2.5(...工作正常...)MyFaces2.2.3 但是空指针异常 occurs.
我通常使用 Mojarra 做的是包含(注入)以编程方式容器内的 JSF 页面。

示例包含页面(包含.xhtml) is:

<h:panelGroup id="container">
</h:panelGroup>
<h:form>
    <h:commandButton value="Include page" action="#{inclusion.include('included.xhtml')}" />
</h:form>

The included page (包含.xhtml) 包含类似以下内容:

    <h:outputText value="INCLUDED TEXT ..." />

这是管理bean:

    @ManagedBean(name="inclusion")
    @RequestScoped
    public final class Inclusion {

    public void include(String contentUrl) throws IOException{
        FacesContext fc = FacesContext.getCurrentInstance();        
        FaceletContext f2ctx = (FaceletContext) fc.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
        UIComponent uic = fc.getViewRoot().findComponent("container");
        if (uic != null && f2ctx != null) {
            f2ctx.includeFacelet(uic, contentUrl);              
        }
    }

这是例外:

javax.el.E​​LException:java.lang.NullPointerException

viewId=/inclusion.xhtml 位置=/opt/jbdevstudio7/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/jsf2test/inclusion.xhtml PhaseId=INVOKE_APPLICATION(5)

引起原因:java.lang.NullPointerException - java.lang.NullPointerException 位于 org.apache.myfaces.view.facelets.impl.FaceletCompositionContextImpl.generateUniqueId(FaceletCompositionContextImpl.java:1045)

/inclusion.xhtml 第 15 行第 91 列 action="#{inclusion.include('included.xhtml')}" - 状态大小:0 字节

这是堆栈跟踪:

org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.E​​LException:java.lang.NullPointerException at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:108) 在 org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74) 在 org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:45) 在 javax.faces.component.UICommand.broadcast(UICommand.java:120) 处 javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1172) 在 javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:365) 在 javax.faces.component.UIViewRoot._process(UIViewRoot.java:1656) 在 javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:862) 在 org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:42) 在 org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196) 在 org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) 处 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 jplus.web.filters.FlowFilter.doFilter(FlowFilter.java:215) 处 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662) 引起的: javax.el.E​​LException:java.lang.NullPointerException at org.apache.el.parser.AstValue.invoke(AstValue.java:291) 在 org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274) 在 org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96) ... 33 更多 引起者:java.lang.NullPointerException at org.apache.myfaces.view.facelets.impl.FaceletCompositionContextImpl.generateUniqueId(FaceletCompositionContextImpl.java:1045) 在 org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.generateUniqueId(DefaultFaceletContext.java:322) 在 org.apache.myfaces.view.facelets.compiler.UIInstructionHandler.apply(UIInstructionHandler.java:87) 在 javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46) 在 org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59) 在 org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48) 在 org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:514) 在 org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:568) 在 org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:546) 在 org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:240) 在 Inclusion.include(Inclusion.java:27) 处 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 处 org.apache.el.parser.AstValue.invoke(AstValue.java:278) ... 35 更多

你有什么想法 ?
有错误吗?
Thanks.


这不是一个错误。使用 FaceletContext 是错误的方法,因为后来它会导致重复的 id 和状态管理问题,但没有解决方案,因为从一开始代码就是错误的。相反,尝试使用这种方式:

        ViewDeclarationLanguage vdl = facesContext.getApplication().
            getViewHandler().getViewDeclarationLanguage(
                facesContext, facesContext.getViewRoot().getViewId());

        Map<String, Object> attributes = new HashMap<String, Object>();
        attributes.put("src", "/addSimpleIncludeVDL_1_1.xhtml");
        UIComponent component = vdl.createComponent(facesContext, 
            "http://java.sun.com/jsf/facelets", 
            "include", attributes);
        getChildren().add(component);

vdl.createComponent(...) 是在 JSF 2.2 中添加的,并且在 MyFaces 中它经过改进以允许这种用法。您甚至可以通过这种方式以编程方式添加复合组件。在 MyFaces 用户列表中,据报道这种方式效果非常好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyFaces Facelet 包含中的 NullPointerException 的相关文章

随机推荐

  • mysql中group by之前对数据进行排序(order by)

    我想对以下数据进行分组sub prd id 但在此之前我需要来自的订单数据max created at 我写了如下查询 select FROM prd data group by sub prd id order by created at
  • 创建 OS X 服务

    我正在尝试创建 OS X 服务 我发现提供系统服务在苹果的文档中 但是我发现它不太清楚我到底需要做什么 我目前正在使用一个应用程序来注册我的服务 认为这会更直接 最终我想创建一个 service 但是即使在注销 登录后 我的服务仍然没有出现
  • 将文件夹中的所有 jar 添加到 jmeter 类路径

    我有一个 CI 服务器 将多个应用程序 jar 及其各种依赖项转储到一个文件夹中 然后我尝试使用 jmeter 类路径中的所有 jar 运行 jmeter 测试 我可以设置jmeter的user classpath属性到以 分 冒号分隔的各
  • 在 Ruby 中,foo.inspect 可以打印出所有实例变量——如果没有访问器,我们可以打印出单独的变量吗?

    很多时候 我们可以使用p foo or foo inspect查看实例变量 但这只是默认行为 并且对象可以选择显示其他内容 或隐藏所有实例变量 可能通过重新定义inspect方法 主要问题是 我是否能看到foo inspect这就是了 ba
  • FlipView:如何将 Collection 绑定为 ItemsSource

    有没有一种聪明的方法来绑定Collection
  • 从客户端接收“utf-8”时出现问题

    我正在尝试使用以下命令在服务器和客户端之间创建双向通信Flask and socket io 一切正常 直到服务器收到utf 8来自客户端的字符串 出现乱码 从服务器发送到客户端工作正常 并且在从客户端发送到服务器之前 客户端正确打印消息
  • 使用 SED 删除重复字符而不进行反向引用

    假设我们有一个文件包含 HHEELLOO HHYYPPOOTTHHEESSIISS 我们要删除重复的字符 据我所知 我们可以这样做 s A Z 1 1 g 这是一个家庭作业 教授说他希望我们在没有反向引用或扩展正则表达式的情况下尝试这些练习
  • 在 QTextEdit 中的字符串后插入 QImage

    我正在尝试将文本打印到 QTextEdit 字段中 但由于某种原因 图像首先显示 这是我的代码 import sys from PyQt4 import QtCore QtGui from PyQt4 QtCore import from
  • 如何查找任何 Android 应用程序的用户花费时间

    您好 我正在开发一个应用程序 我需要查找用户在 Facebook 等特定应用程序上花费的时间 每当用户花费 x 分钟时 我想给用户一些奖励 Android 有什么好的方法可以实现这一点吗 正如问题中所指出的检测其他应用程序何时打开或启动 您
  • Rails 3 后台作业管理器

    有谁知道与 Rails 3 一起使用的后台作业管理器吗 我听说过 Starling 和 Workling 但我没有看到 Rails 3 的分支 I used 本文让delayed job 一个common Rails 2 gem 用于对稍后
  • 方差分析 (rstatix) 中“mutate()”输入“数据”的问题

    这真让我抓狂 我在用anova test from rstatix它告诉我 我的专栏不在那里 而它们显然在那里 这就是我的数据框的样子 ID c 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 Form c A A
  • “导入keras”和“导入tensorflow.keras”有什么区别

    我想知道 使用从tensorflow导入keras有什么区别import tensorflow keras或者只是 pip 单独安装 keras 并使用导入它import keras因为到目前为止两者似乎都工作得很好 我注意到的唯一区别是我
  • 访问 H2 数据库架构

    我目前正在使用 java 访问嵌入式 H2 数据库jOOQ生成表类等 我当前可以执行诸如 create select from TEST fetch 在我的代码中 返回结果等 但是我无法查询信息模式 我可以使用 H2 控制台访问它 并且为给
  • 在 firebase 上构建数据的最佳方式是什么?

    我是 firebase 的新手 我想知道构建数据的最佳方式是什么 我有一个简单的例子 我的项目有申请人和应用程序 1个申请人可以有多个申请 我如何在 firebase 上关联这两个对象 它像关系数据库一样工作吗 或者在数据设计方面需要完全不
  • 如何将外部样式表链接到多个页面和文件夹?

    我正在构建一个相当大的网站 其中有很多页面和文件夹 我有 1 个样式表 如何将样式表添加到这些文件夹的 全部 在我开始将页面放入单独的文件夹中之前 我没有遇到此问题 现在每个页面都有自己的文件夹 它不再读取我的样式表 除非它位于同一文件夹中
  • Delphi XE2 的 FastString 替代品

    当我问这个问题不久前 FastString 单元来解决我的问题 现在我开始将我的软件从 D7 迁移到 XE2 我的问题是 既然 FastString 似乎不再能解决问题 我现在有什么替代方案 或者 更乐观的是 Delphi 本身是否解决了这
  • Git 和多个存储库

    我正在使用 github 来存储我的 PowerShell 配置文件 我发现posh vcs我想在我的实际实现之上使用它 我希望能够合并来自posh vcs到我现在的环境 处理这个问题的最佳方法是什么 我的文件只有一个存储库 而另一个文件夹
  • 使用泛型时无法解析方法

    我正在尝试为我的项目实现一棵树 该树将包含经过一些移动后处于不同棋盘状态的节点 现在我的项目结构如下 src Agent Support Test Threes Tree java Some class java some class Bo
  • 修复 Sublime Text 2 行结尾?

    这是我的Settings User config auto indent true color scheme Packages Color Scheme Default Twilight tmTheme default line endin
  • MyFaces Facelet 包含中的 NullPointerException

    我正在尝试从以下位置迁移简单的 JSF2 2 原型Mojarra2 2 5 工作正常 MyFaces2 2 3 但是空指针异常 occurs 我通常使用 Mojarra 做的是包含 注入 以编程方式容器内的 JSF 页面 示例包含页面 包含