#{request} 在 EL 中被评估为 null 在 Mojarra 2.3 m02

#{request} in EL is evaluated to null in Mojarra 2.3 m02

我正在尝试使用 Mojarra 2.3.0-m02。如下确认JSF配置文件faces-config.xml兼容JSF 2.3

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.3"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
              http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd">

</faces-config>

我目前正在进行一个玩具空白游乐场项目,除了一个 XHTML 文件和一个或两个托管 bean (CDI) 之外什么都没有。没有像 PrimeFaces、OmniFaces 这样的额外依赖项。

以下

<h:outputText value="contextPath : #{request.contextPath}"/>

计算为 null (空字符串?)。将 faces-config.xml 文件还原为特定于 JSF 2.2 会显示预期的正确上下文路径。

罪魁祸首是什么? (我使用的是 GlassFish Server 4.1)。


补充:

我在项目的主模板上按以下方式使用了它。

<ui:param name="contextPath" value="#{request.contextPath}"/>

然后在 EL 中使用 contextPath,例如在整个应用程序的多个地方使用 #{contextPath}

首先,JSF 2.3 目前仍处于 "alpha"(开发)阶段,不时发布里程碑版本。所以预计有些事情还没有完成,或者可能只是被忽略了。尽管如此,非常感谢测试里程碑版本并报告任何问题。

JSF 2.3 中发生的变化之一是所有 implicit EL objects are resolved via CDI producers instead of an EL resolver,这将是第一个需要 CDI 的版本。事实证明这仍在进行中。不仅 #{request} 丢失,而且 #{header}#{initParam}#{param} 甚至 #{cc}#{component} 在 m02.

它可能会在下一个里程碑中出现。