这完全适用于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中的错误吗?是否记录在任何地方?有什么方法可以选择我想要的名字吗?
答案 0 :(得分:0)
正如在原始帖子的评论中所讨论的,当应用程序的类路径中存在多个JSF实现时,会出现这种类型的问题。在传统WebSphere的情况下,默认情况下,JSF 2.0 MyFaces实现提供给所有应用程序。在这种情况下,第三方JSF实现不应在没有其他配置的情况下直接与应用程序捆绑在一起,因为这可能会导致这类类路径冲突。
在传统的WebSphere中,应该使用提供的JSF实现,或者应该在隔离的共享库中配置所需的JSF实现并与应用程序相关联。可以找到使用第三方JSF实现的说明here。
注意,在WebSphere Liberty中,用户可以启用/禁用服务器提供的JSF实现。因此,对于这种情况,只要未启用jsf-2.*
功能,就可以将JSF实现与应用捆绑在一起。