<ui:param/> 名称必须与 WebSphere 上的 el 值匹配,但不能 Tomcat

<ui:param/> name must match el value on WebSphere but not Tomcat

这在 Tomcat:

上完美运行
<ui:include src="myPage.xhtml">
  <ui:param name="myForm" value="#{theForm}" />
</ui:include>

但是当我将其部署到 WebSphere 时,我收到此错误:

Error Caught: 
javax.el.PropertyNotFoundException: Target Unreachable, identifier 'myForm' resolved to null
at org.apache.el.parser.AstValue.getTarget(AstValue.java:101)
at org.apache.el.parser.AstValue.invoke(AstValue.java:249)

为了让它在 WebSphere 上运行,我需要将名称更改为与值中的 el 表达式相同:

<ui:include src="myPage.xhtml">
  <ui:param name="theForm" value="#{theForm}" />
</ui:include>

我确定我不应该这样做。它是 WebSphere 中的错误吗?它记录在任何地方吗?有什么方法可以让我随意选择名字吗?

正如在原始 post 的评论中所讨论的那样,当应用程序的类路径上存在多个 JSF 实现时,就会出现此类问题。对于传统的 WebSphere,JSF 2.0 MyFaces 实现默认提供给所有应用程序。在这种情况下,第三方 JSF 实现不应在没有额外配置的情况下直接与应用程序捆绑在一起,因为这会导致此类类路径冲突。

在传统的 WebSphere 中,要么使用提供的 JSF 实现,要么在隔离的共享库中配置所需的 JSF 实现并与应用程序相关联。可以找到使用第三方 JSF 实现的说明 here

请注意,在 WebSphere Liberty 中,服务器提供的 JSF 实现可以由用户enabled/disabled。因此,对于这种情况,只要未启用 jsf-2.* 功能,将 JSF 实现与应用程序捆绑在一起就可以了。