<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 实现与应用程序捆绑在一起就可以了。
这在 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 实现与应用程序捆绑在一起就可以了。