我使用库primefaces-3.4-SNAPSHOT-20120807.jar和javax.faces-2.1.9.jar在WAS8.5.4服务器上运行JSF2应用程序。 在其中一个页面中,我有p:commandlink按钮来查看附加的文档。但是当用户点击这个组件时,浏览器显示错误SCRIPT5009:' myfaces'未定义。因此,用户无法查看文档。 请告知如何解决此问题。
答案 0 :(得分:1)
WAS附带了MyFaces,但是你通过webapp提供Mojarra,试图完全覆盖它,显然没有指示它应该加载WAR捆绑的JSF而不是WAS捆绑的JSF。
摆脱javax.faces-2.1.9.jar
(那个Mojarra)。作为一个完整的Java EE容器,WAS已经开箱即用(这是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变量(但是因此无法解释,如所解释的那样。