:index-group: Unrevised
:jbake-type: page
:jbake-status: status=published
= MyFaces CODI Demo

=== Steps to run the example

[discrete]
==== Build and start the demo:

[source,bash]
----
mvn clean package tomee:run
----


==== Open:
[source,java]
----
http://localhost:8080/myfaces-codi-demo-8.0.1-SNAPSHOT/
----

This example shows how to improve JSF2/CDI/BV/JPA applications with
features provided by Apache MyFaces CODI and ExtVal.

[discrete]
==== Intro of MyFaces CODI and ExtVal

The Apache MyFaces Extensions CDI project (aka CODI) hosts portable
extensions for Contexts and Dependency Injection (CDI - JSR 299). CODI
is a toolbox for your CDI application. Like CDI itself CODI is focused
on type-safety. It is a modularized and extensible framework. So it’s
easy to choose the needed parts to facilitate the daily work in your
project.

MyFaces Extensions Validator (aka ExtVal) is a JSF centric validation
framework which is compatible with JSF 1.x and JSF 2.x. This example
shows how it improves the default integration of Bean-Validation
(JSR-303) with JSF2 as well as meta-data based cross-field validation.

Illustrated Features

* Apache MyFaces CODI

* Type-safe view-config

* Type-safe (custom) view-meta-data

* Type-safe navigation

* Type-safe (specialized) config

* Type-safe custom project-stage

* @WindowScoped

* Controlling CODI scopes with WindowContext

* @ViewAccessScoped

* Manual conversation handling

* Secured pages (AccessDecisionVoter)

* @Transactional

* I18n (fluent API)

* Dependency-Injection for JSR303 (BV) constraint-validators

* Dependency-Injection for JSF phase-listeners

* Apache MyFaces ExtVal

* Cross-Field validation (@Equals)

* Type-safe group-validation (@BeanValidation) for JSF action-methods
