tomcat - <用户界面 :param/> name must match el value on WebSphere but not Tomcat

标签 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 中的错误吗?它记录在任何地方吗?有什么方法可以让我随意选择名称吗?

最佳答案

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

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

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

关于tomcat - <用户界面 :param/> name must match el value on WebSphere but not Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998841/

相关文章:

jsf - JSF 2:在rendered属性中使用枚举

primefaces - tabview 的事件索引未自动更新

amazon-web-services - 如何从 AWS Beanstalk 中仅检索我关心的日志

jsf - Facelets 自定义错误页面 - 自定义/包装异常消息/堆栈跟踪

tomcat - 无法从 hsqldb 日志文件中恢复

jsf - 验证错误值无效

javascript - 当 JavaScript 将 disabled 属性更改为 false 时,Commandbutton 不会调用操作

ajax - Primefaces tabview : set the active index on tab change

java - Spring MVC 应用程序启动时出现奇怪的错误

java - Tomcat API 与其他 API