使用 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(例如通过使用 )。在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:325) 好的,转到\server\default\deploy\jboss-web.deployer\conf 并编辑 web.xml 文件。关于 JSF &lt;context-param&gt; &lt;param-name&gt;com.sun.faces.injectionProvider&lt;/param-name&gt;&lt;listener-class&gt;org.jboss.web.jsf.integration.config.JBossJSFConfigureListener&lt;/listener-class&gt;&lt;listener&gt; &lt;listener-class&gt;com.sun.faces.application.WebappLifecycleListener 的评论行并从您的 web.xml 中删除您的 webbApps &lt;param-name&gt;org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL&lt;/param-name&gt; remplace 也在server\default\deploy\jboss-web.deployer\jsf-libs jsf jars 中(不要忘记用初始名称重命名 jar)

以上是关于使用 JBoss 4.x 实现 JSF 2.0的主要内容,如果未能解决你的问题,请参考以下文章

在 Servlet 2.4 容器上运行 JSF 2.0

jsf 2.2(最终版)不适用于 Jboss 7.1.1

RichFaces 3.3.3 和 JSF 2.0 工作示例

Jboss X JSF 实现版本矩阵是啥?

使用 JSF 2.0 实现重定向登录的正确方法是啥?

从facelets 1.1迁移到faclets 2.0 - FaceletViewHandler