当前位置: 首页 > 知识库问答 >
问题:

如何在Spring应用程序中使用Maven将JSF2.2更新为JSF2.3

闾丘永春
2023-03-14

我正在使用Maven,并且已经将pom.xml依赖项从:

<dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.14</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.13</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>

致:

<dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.3.0</version>
    </dependency>

但现在我得到一个构建错误:

<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
          version="2.3">
<application>
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    <el-resolver>org.primefaces.application.exceptionhandler.PrimeExceptionHandlerELResolver</el-resolver>
</application>

<factory>
    <exception-handler-factory>org.primefaces.application.exceptionhandler.PrimeExceptionHandlerFactory</exception-handler-factory>
</factory>

pom.xml或我的应用程序中的其他地方还有更多的更改要做吗?

共有1个答案

酆英达
2023-03-14

这是一个老问题,但是对于仍然面临这个问题的人来说:为了避免“无法找到CDI BeanManager”错误,您的faces-config.xml版本不是2.3web.xml版本不是4.0非常重要!

Mojarra实现ELUtils类包含以下代码

if (getFacesConfigXmlVersion(facesContext).equals("2.3") || getWebXmlVersion(facesContext).equals("4.0")) {
                throw new FacesException("Unable to find CDI BeanManager");
}

当使用较低版本时,它跳过这个检查,使用Spring DI而不是CDI。

 类似资料:
  • 如果1要更新应用程序,请从控制台执行操作。。1.单击部署。2.选择应用程序名称并单击更新选项。3、在这里,他可以改变: 现在在我的应用程序中没有指定计划路径,所以要更新应用程序,我只更改源路径。应用程序已成功更新。 我想通过提供新的源路径,使用wlst命令更新应用程序。有可能吗? 喜欢 updateApplication('backoffice','path\ to\ the\ ear\ file

  • 我已经在Google Playstore中发布了一个包名为(com.syedirfanhussaini.tables)的应用程序,我想更新我现在在flutter中制作的应用程序,也在我的代码中做了所有必要的更改。 新的flutter应用程序的包名(com.syedirfanhussaini.tables)与一个已经在google play商店中发布的旧的原生应用程序相同。 现在,我的主要问题是,我

  • 我们有一个应用程序,利用在应用程序计费。我们看到的问题如下: 当使用较高版本代码的构建被上传到Play Developer控制台时,In App Billing将停止在设备上的应用程序(使用较低版本代码)上工作,表示“应用程序未配置为计费”。 这很好,在测试的时候,但问题是--当应用程序在Google Play商店中时,会有什么行为?当您替换应用程序(以执行更新)时,处于野生状态(具有较低版本代码

  • 有多种方法可以更新Electron应用. 最简单并且获得官方支持的方法是利用内置的Squirrel框架和Electron的autoUpdater模块。 Updating Applications There are several ways to update an Electron application. The easiest and officially supported one is

  • 有多种方法可以更新Electron应用. 最简单并且获得官方支持的方法是利用内置的Squirrel框架和Electron的autoUpdater模块。 使用 update.electronjs.org Electron 团队维护 update.electronjs.org,一个免费开源的网络服务,可以让 Electron 应用使用自动更新。 这个服务是设计给那些满足以下标准的 Electron 应

  • 问题内容: 我们有一个Java服务器应用程序,该应用程序可以在许多计算机上运行,​​所有计算机都连接到Internet,其中一些位于防火墙后面。我们需要从一个中央站点远程更新JAR文件和启动脚本,而不会明显中断应用程序本身。 该过程必须无人值守且万无一失(即,由于不及时的互联网中断,我们无法中断应用程序)。 过去,我们使用各种外部脚本和实用程序来处理类似的任务,但是由于它们具有自己的依赖性,因此难