Apache MyFaces Core

Clone this repo:
  1. d22b88e build(deps-dev): bump org.assertj:assertj-core (#954) by dependabot[bot] · 11 days ago main
  2. be7f9a9 build(deps-dev): bump lodash from 4.17.21 to 4.17.23 in /api/src/client (#953) by dependabot[bot] · 2 weeks ago
  3. 98b0dc4 build(deps): bump tar and npm-check-updates in /api/src/client (#952) by dependabot[bot] · 3 weeks ago
  4. dbd5bf5 Spec #1940 - Add clearModel to f:resetValues by tandraschko · 3 weeks ago
  5. dbe9a16 Spec #2026 - Better implement generics in Application#createConverter and createValidator by tandraschko · 3 weeks ago

Maven Central Build Status License Build Status ASF

Apache's implementation of the JavaServer Faces (JSF) and Jakarta Faces specification

Branches

main

Jakarta Faces 5.0 implementation

4.1.x

4.1.x Jakarta Faces 4.1 implementation

4.0.x

4.0.x Jakarta Faces 4.0 implementation
Based on the refactored 2.3-next codebase

2.3-next

2.3-next (Almost) JavaServer Faces 2.3 implementation
Completely refactored codebase compared to 2.3, also providing a Quarkus extension
2.3-next equals the JSF 2.3 API but delegates @ManagedBeans to CDI; ManagedBeans configured via XML are completely ignored. The implementation of the old FacesEL (javax.faces.el.*) also has been completely removed.

2.3.x

2.3 JavaServer Faces 2.3 implementation

Minimum Requirements (main)

  • Java 17+
  • Servlet 5.0+
  • EL 5.0+
  • CDI 4.0+
  • JSTL 3.0+ (optional)
  • BV 3.0+ (optional)

Installation

mvn clean install

Usage

Dependency

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

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

</web-app>

index.xhtml

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:f="jakarta.faces.core"
  xmlns:h="jakarta.faces.html">

  <h:head>

  </h:head>

  <h:body>

    Hello World!

  </h:body>
</html>

Quarkus extension

Since 2.3-next a Quarkus extension is available. A sample project can be found here: https://github.com/apache/myfaces/blob/main/extensions/quarkus/showcase/

Not supported features:

  • Quarkus does not support session replication / passivation / clustering
  • Quarkus beans are not serializable and therefore session passivation would never work anyway
  • Quarkus does not implement @ConversationScoped
  • Quarkus does not support injection in normal objects, therefore injection in JSF artifacts like NavigationHandler etc. is not supported

Differences to a normal servlet container while developing

  • You need to put your views under src/main/resources/META-INF/resources as Quarkus doesn't create a WAR and src/main/webapp is ignored!