从JSF 2.2迁移到JSF 2.3

发布于 2025-01-26 18:12:23 字数 3038 浏览 2 评论 0原文

我想从JSF 2.2到JSF 2.3迁移,当我拥有JSF 2.2的这两个依赖关系时,该应用程序正常工作,

     <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.2.0</version>
    </dependency>

但是当我用这些依赖关系代替它们时,

     <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.3-next-M3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.3-next-M3</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.2</version>
        <scope>provided</scope>
    </dependency>

我会出现一个错误,说

 No Factories configured for this Application
 A typical config looks like this;

<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener- 
class>
</listener>

这是Servlet注册bean servletContextextEntialialize

    @Bean
public ServletRegistrationBean facesServlet() {
    FacesServlet servlet = new FacesServlet();
    ServletRegistrationBean registration = new ServletRegistrationBean(servlet, "*.jsf");
    registration.setName("Faces Servlet");
    registration.setLoadOnStartup(1);
    registration.setMultipartConfig(new
            MultipartConfigElement((String) null));
    return registration;
}

the ServletContextEnialializer

    @Bean
public ServletContextInitializer servletContextInitializer() {
    return servletContext -> {
        servletContext.setInitParameter("javax.faces.FACELETS_SKIP_COMMENTS", Boolean.TRUE.toString());
        servletContext.setInitParameter("primefaces.FONT_AWESOME", Boolean.FALSE.toString());
        servletContext.setInitParameter("javax.faces.FACELETS_LIBRARIES", "/WEB-INF/primefaces-california.taglib.xml");
        servletContext.setInitParameter("primefaces.THEME", "california-#{guestPreferences.theme}");
        servletContext.setInitParameter("javax.faces.PROJECT_STAGE", "PRODUCTION");
        servletContext.setInitParameter("javax.faces.STATE_SAVING_METHOD", "server");

    };
}

和IAM,IAM使用IAM。 tomcat服务器

        <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

我尝试在web.xml中添加startupservletContextListener

I want to migrate from JSF 2.2 To JSF 2.3, the application was working fine when i have those two dependencies of JSF 2.2

     <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.2.0</version>
    </dependency>

But when i replaced them by those dependencies

     <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.3-next-M3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.3-next-M3</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.2</version>
        <scope>provided</scope>
    </dependency>

i got an error saying

 No Factories configured for this Application
 A typical config looks like this;

<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener- 
class>
</listener>

Here is the Servlet Registration Bean

    @Bean
public ServletRegistrationBean facesServlet() {
    FacesServlet servlet = new FacesServlet();
    ServletRegistrationBean registration = new ServletRegistrationBean(servlet, "*.jsf");
    registration.setName("Faces Servlet");
    registration.setLoadOnStartup(1);
    registration.setMultipartConfig(new
            MultipartConfigElement((String) null));
    return registration;
}

The ServletContext Initilializer

    @Bean
public ServletContextInitializer servletContextInitializer() {
    return servletContext -> {
        servletContext.setInitParameter("javax.faces.FACELETS_SKIP_COMMENTS", Boolean.TRUE.toString());
        servletContext.setInitParameter("primefaces.FONT_AWESOME", Boolean.FALSE.toString());
        servletContext.setInitParameter("javax.faces.FACELETS_LIBRARIES", "/WEB-INF/primefaces-california.taglib.xml");
        servletContext.setInitParameter("primefaces.THEME", "california-#{guestPreferences.theme}");
        servletContext.setInitParameter("javax.faces.PROJECT_STAGE", "PRODUCTION");
        servletContext.setInitParameter("javax.faces.STATE_SAVING_METHOD", "server");

    };
}

And iam using Tomcat server

        <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

I tried to add the StartupServletContextListener in web.xml but nothing happens

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文