: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:
....
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
