使用 JBoss 4.x 实现 JSF 2.0
Posted
技术标签:
【中文标题】使用 JBoss 4.x 实现 JSF 2.0【英文标题】:Implementing JSF 2.0 with JBoss 4.x 【发布时间】:2012-09-30 11:07:16 【问题描述】:我目前正在为部署在 JBoss 4.3.0 中的应用程序将 JSF 版本从 1.2 升级到 2.0。我对 JBoss 还是很陌生,我遇到了这个问题。我已经下载了 JSF jars(impl 和 api)并将其放在 jboss-web.deployer/jsf-libs 下。我还将richfaces-impl jar 放在 C:\Program Files\Java\richfaces-ui-3.3.3.Final\lib 中。
当我启动服务器时,我在控制台中没有收到任何错误,但我无法浏览该站点。 Internet Explorer 给出错误提示“Mojarra 未定义”。在将版本的输出 .html 文件与 jsf 2.0 jar 和 1.2 进行比较时,我注意到 onclick 属性中的函数对于 JSF 2.0 具有 'mojarra.jsfcljs(document.getElementById' 而对于 1.2 它具有 'var b=function ()if(typeof jsfcljs == 'function')jsfcljs(document.getElementById'.
这个输出文件是如何生成的?如果我可以让输出文件具有相同的功能,它会起作用吗?如果没有,那么我该如何解决“mojarra 未定义”问题?我正在开发 MyEclipse Enterprise Workbench 8.0 版。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:JSF 2.0 在 Jboss 4.x 甚至在 Jboss 5.x 中都不能工作 您需要将您的 Jboss 升级到 6.x 或更高版本。你可以参考这个link。也就是说,可以通过将 jars 放在 Jboss lib 文件夹中,使 JSF 2.x 在 Jboss 较低版本(如 5.x)上运行。但是,不建议这样做,也不应该这样做。
【讨论】:
【参考方案2】:我在 Jboss 4.2.2 上使用 JSF 2 的 Mojarra 实现。
您需要在 web.xml 中指定:
<context-param>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>true</param-value>
</context-param>
您还需要在您的战争 jsf 库中提供您要使用的内容。 让我知道在 Jboss 4.3.0 上是否可以
【讨论】:
嘿,谢谢!但它仍然不起作用。还是同样的错误,mojarra 没有定义。我更改了 faces-config.xml 的版本,从 web.xml 和 faces-config.xml 中注释掉了 view_handler 部分,并从 WEB-INF\lib 中删除了 jsf-facelets.jar,现在当我开始访问它的 url给出以下错误: 09:58:35,026 INFO [STDOUT] 09:58:35,026 错误 [BaseXMLFilter] 过滤器链 javax.servlet.ServletException 中的异常:Orchestra 无法创建名为“AccessScopeManager”的 bean 实例'。确保 JSF 变量解析使用您的依赖注入 (DI) 框架(例如 Spring 的 DelegatingVariableResolver 在您的 faces-config.xml 文件中)并且定义了标准的 Orchestra 配置 bean(例如通过使用\server\default\deploy\jboss-web.deployer\conf
并编辑 web.xml 文件。关于 JSF <context-param> <param-name>com.sun.faces.injectionProvider</param-name>
、<listener-class>org.jboss.web.jsf.integration.config.JBossJSFConfigureListener</listener-class>
和 <listener> <listener-class>com.sun.faces.application.WebappLifecycleListener
的评论行并从您的 web.xml 中删除您的 webbApps <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
,
remplace 也在server\default\deploy\jboss-web.deployer\jsf-libs
jsf jars 中(不要忘记用初始名称重命名 jar)以上是关于使用 JBoss 4.x 实现 JSF 2.0的主要内容,如果未能解决你的问题,请参考以下文章