SCRIPT5009:'myfaces' 未定义

SCRIPT5009: 'myfaces' is undefined

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

WAS 随 MyFaces 开箱即用,但您试图通过 Web 应用程序提供 Mojarra 来完全覆盖它,显然没有指示 WAS 它应该加载 WAR-bundled JSF 而不是 WAS-bundled JSF.

摆脱 javax.faces-2.1.9.jar(即 Mojarra)。 WAS 是一个成熟的 Java EE 容器,它已经随 JSF 开箱即用(即 MyFaces)。

您遇到的错误只是一个Java脚本错误。 Java脚本变量 myfaces 未在任何地方定义。它通常在正确加载 MyFaces 时自动定义,并在 JSF 页面中自动包含自己的 jsf.js JavaScript 文件。当缺少 <h:head> 或 Mojarra 自己的 jsf.js Java 脚本被自动包含时(您可能已经知道,WAR 中的网络资源有加载优先级高于 JAR 和服务器本身)。 Mojarra 的 jsf.js 确实没有定义变量名 myfaces。而是 mojarra。但是,JSF 组件的 HTML 输出由 MyFaces 呈现,在 WAR 有机会加载其捆绑的 Mojarra 之前已由服务器加载,因此它们将呈现并期望 myfaces Java脚本变量(但如前所述,因此无处可用)。