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

时间:2017-03-24 11:53:33

标签: tomcat jsf primefaces websphere el

这完全适用于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中的错误吗?是否记录在任何地方?有什么方法可以选择我想要的名字吗?

1 个答案:

答案 0 :(得分:0)

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

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

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