【问题标题】:<ui:param/> name must match el value on WebSphere but not Tomcat<ui:param/> 名称必须与 WebSphere 上的 el 值匹配,但不能与 Tomcat 匹配
【发布时间】:2017-08-17 08:28:17
【问题描述】:

这在 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 异常?
  • @wtlucy 这是 2.2 版,我们在 tomcat(用于开发)中使用与在 websphere(用于测试)中相同的版本。这是日志中唯一的错误。
  • 能贴出相关的backing bean源码吗?另外,您使用的是哪个 WAS 版本?
  • backing bean 没什么特别的。我以前用不同的豆子遇到过这个问题,但这次我决定问一个 SO 问题。我会在周一找到 WAS 版本,然后再回复。
  • @wtlucy websphere 版本 8.5.5.4

标签: tomcat jsf primefaces websphere el


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多