【问题标题】:SCRIPT5009: 'myfaces' is undefinedSCRIPT5009:“myfaces”未定义
【发布时间】:2015-05-14 18:10:04
【问题描述】:

我在 WAS8.5.4 服务器上运行 JSF2 应用程序,使用库 primefaces-3.4-SNAPSHOT-20120807.jar 和 javax.faces-2.1.9.jar 。 在其中一个页面中,我有 p:commandlink 按钮来查看附加文档。但是当用户单击此组件时,浏览器显示错误 SCRIPT5009: 'myfaces' is undefined 。因此,用户无法查看文档。 请告知如何解决此问题。

【问题讨论】:

    标签: jsf primefaces internet-explorer-10 websphere-8 commandlink


    【解决方案1】:

    WAS 附带 MyFaces 开箱即用,但您试图通过 web 应用程序提供 Mojarra 来完全覆盖它,显然没有指示 WAS 应该加载 WAR 捆绑的 JSF 而不是 WAS 捆绑的 JSF。

    摆脱javax.faces-2.1.9.jar(即Mojarra)。作为一个成熟的 Java EE 容器,WAS 已经随 JSF 一起提供(即 MyFaces)。

    您遇到的错误只是一个 JavaScript 错误。 JavaScript 变量myfaces 没有定义。它通常在 MyFaces 正确加载并在 JSF 页面中自动包含其自己的 jsf.js JavaScript 文件时自动定义。当<h:head> 丢失,或者Mojarra 自己的jsf.js JavaScript 被自动包含(您可能已经知道,WAR 中的Web 资源比JAR 和服务器本身具有更高的加载优先级)时,可能会发生故障。 Mojarra 的jsf.js 确实没有定义变量名myfaces。而是mojarra。但是,JSF 组件的 HTML 输出正在由 MyFaces 呈现,在 WAR 有机会加载其捆绑的 Mojarra 之前,它已经由服务器加载,因此它们将呈现并期望 myfaces JavaScript 变量(但因此正如解释的那样,无处可用)。

    【讨论】:

    • 嗨,感谢您的详细回答。虽然,我意识到该应用程序没有使用 javax.faces-2.1.9.jar 。我们有两个不同的页面,它们使用具有相似功能的精确 h:commandlink 组件。在其中一个页面中它不会导致任何错误,但在另一个页面中它是。我也尝试过明确包含 jsf.js 库。您能否重新审视这个问题并解决它。感谢您的帮助和 cmets。
    • 检查生成的 HTML 输出是否存在 jsf.js,并检查浏览器的 HTTP 流量监视器是否浏览器成功检索它以及是否在其中定义了 myfaces
    猜你喜欢
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多