Apache MyFaces
JavaServer(tm) Faces (JSF) is a web application framework specification (JSR252, JSR127) based around the model-view-controller pattern.
The Apache MyFaces project provides both an implementation of the JSF specification ("MyFaces Core"), and a set of add-on libraries that work on any implementation of the specification (including, of course, Apache MyFaces Core).
JSF supports the development of highly interactive applications where the system interacting with the user is separated from the system that contains the presentation logic; web-browser/web-server is one example. JSF has a "component-based" architecture, and therefore is more like "Swing for the web" than an HTML publishing framework. People familiar with Swing, Gnome, KDE, MFC, VisualBasic, Delphi etc should feel right at home developing JSF applications.
JSF is quite similar to the Tapestry framework as that is also a component-based framework. JSF can also fill the same "niche" as the well-known Struts framework, but has a rather different approach.
The Sun JavaServer Faces(tm) Page has information about the JSF-1.2 (and older JSF-1.1) specification. They also provide a useful Tutorial there. MyFaces Core provides a 100% compliant implementation of these specifications.
The Apache MyFaces family of projects includes the following libraries that can be used with any JSF implementation to add extra features and flexibility:
Tomahawk (Tomahawk),
Tobago (Tobago),
Trinidad (Trinidad),
Orchestra (Orchestra),
Portlet Bridge (PortletBridge),
Extensions (Extensions),
Dojo facelets (unreleased + in progress, see http://www.j4fry.org/dojoFacelets.shtml)
You can find further information about the MyFaces subprojects on the official site at http://myfaces.apache.org.
See the MyFaces Tomahawk and Sandbox examples in action:
See a MyFaces real world use case at JavaWorld
See the dojoFacelets in action:
If your company uses MyFaces, please add your company here: Companies_Using_MyFaces.
FAQ
FAQ - Frequently asked questions about MyFaces or JSF, including a section on Facelets/Tomahawk/!MyFaces/Trinidad/JSF Troubleshooting
Using MyFaces Core
Getting_Started - Quick guide to MyFaces Core
Installation_and_Configuration - Installation instructions for different servlet containers
Using_MyFaces_in_a_Project_built_with_Maven - General instruction on adding MyFaces Core to a Maven POM.
Building_With_Maven - Building MyFaces Core from sourcecode using Maven
MyFaces_Archetypes_for_Maven - Set up a new JSF project in a minute, following the standards and including the exact dependencies!
Library_dependencies - Library dependencies and their versions
How_to_add_MyFaces_support_to_a_Sun_JSF_RI_application - Add MyFaces Core support to a JSF RI application
CompatibilityMatrix - MyFaces Core and component library compatibility guide
JSF and MyFaces Core in Theory: The Concepts
JSF_and_MVC - JSF and the model-view-controller pattern
How_JSF_State_Management_Works - Serialization, StateHolder, backing beans, component tree, t:saveState explained.
How_The_Immediate_Attribute_Works - immediate, validation, model update explained.
How_Component_Child_Rendering_Works - getRendersChildren, encodeChildren explained.
StudyGuide - Tips/guide to getting familiar with the MyFaces Core implementation
IDAssignment - Assignment of IDs to HTML elements.
JSF and MyFaces Core in Practice: The HowTo's
Working with tables
Working_with_DataTable_and_ActionListeners - Handling buttons or links in table rows
ExecutingMethodsFromLinkButtonParameters - From List to Detail
- Access a detail record from a master list, or more generally, execute a managed bean method based on parameters provided for a link or button.
ManagingDataScrollerPage - From Detail back to List : How to stay on the right table page.
Working_With_DataTable_And_PreserveDataModel - Use the data table and preserve data model correctly.
WorkingWithLargeTables - Use dataTable/dataScroller without having the entire dataset in memory
Working_with_auto_sortable_tables - Enable automatic sort on your data table
Exporting_DataTable_To_MS-Excel - Out put a data table to excel
Tracing and Debugging
TracingMyFacesUsingAspectJ - How to trace MyFaces using AspectJ
FacesTrace - A visual debugger that can be integrated to the JSF pages
Working with TabbedPanes
SettingTabClasses - Setting CSS Classes on Tabs.
Working with Radio Buttons
Display_Radio_Buttons_In_Columns - Example of Displaying Radio Buttons in Columns.
Radio_Buttons_and_Browsers - Notes about radio buttons and browser specific behavior.
Working with JavaScript and JSF
JavascriptWithJavaServerFaces - Call javascript routines with commandLink and commandButton.
SubmitPageOnValueChange - Make an input control submit a page when the value changes.
ManagingCheckboxes - Tips for working with checkboxes in datatables.
JavascriptOpenNewWindow - A tutorial how to open javascript windows and how to get around the problems involved.
Finding JSF Components with javascript - How to deal with the complex html IDs that JSF generates for components
Conversion and Validation
NullCapableConverter - Make a converter to handle disabled or null-capable SelectItems.
Create_and_Display_Messages - Create Messages to be used by view with h:message h:messages.
OptionalValidationFramework - allows you to change the behavior of validators in a form
Entity_Converters - a special kind of converter that can take the input value as id and the return the desired entity instance.
Client_Side_Validation - Run conversions and validations at client side.
Managing Errors/Infos/Warnings
Displaying_Errors/Infos/Warnings_in_JSF_Pages - A method for communicating messages to the user.
Handling_Server_Errors - methods for handling server errors.
Navigation Handling - in and outside JSF
Navigation_Overview - Overview of the Navigation Tags
Custom_Navigation_Handler - Enhance the MyFaces Core Navigation Handler to support parameter passing, dynamic navigation and redirection.
InvokingJsfPagesWithStandardUrls - Creating standard HTML links (with parameters) that display JSF pages (using JSF in a RESTful environment)
Backend
AccessingOneManagedBeanFromAnother - Accessing one managed bean from another
ClearInputComponents - Clear/Reset all submitted values in input components on a page.
AccessFacesContextFromServlet - How to access the Faces Context from a servlet.
NestedFacesContext - A solution how to deal with nested FacesContexts
Execute_action_on_page_load - How to run JSF actions and run navigation rules when a page loads.
Configuration of special features
Performance - Making JSF perform
PerformanceTestingWithJMeter - Using JMeter to test your application's performance.
Secure_Your_Application - Encrypt the view state.
LoggingSettings - Useful classes to log on for troubleshooting.
A_Little_Quality_Assurance - How to validate your managed beans and navigation rules.
Management_of_Webapp_Resources_With_Weblets - How to use resources packaged in a jar in MyFaces apps using Facelets.
Bandwidth - Compression
SecurityContext - Security Extension
RedirectTracker - Preserve messages and t:saveState across redirects
Properly use those extended components
Setup_For_File_Uploads - A quick and dirty checklist for setting up your MyFaces application for file uploads.
Dynamic_Menus_with_JSCookMenu - Create dynamic menus using the jsCookMenu component.
WYSIWYG_Editor - Integrate TinyMCE or DOJO WYSIWYG Editor into !Myfaces Application
JSF and MyFaces in Practice: Specialized Trails
Creating Custom Components
ComponentPack - Create your own component pack
Creating_Composite_Components - Create a composite or compound component out of existing components
External_Resources - Integrate javascript, css, images and more using myfaces AddResource component
Programmatic - Programmatic creation and manipulating components in the runtime
Portlets
Using_Portlets - Using MyFaces within Portlets
Migration from previous versions
misc
Sending_Files - How to set up a action which will download a file.
Parameters_In_EL_Functions - How to pass parameters in an EL expression function.
JSF and MyFaces: The Reference
JsfComponents - List of JSF components and how to use them
Tomahawk - List of custom MyFaces Tomahawk components and extensions, and how to use them.
Frameworks related to JSF
Hibernate_And_MyFaces - Bind Hibernate to JSF/!MyFaces
Tiles_and_JSF - Use Tiles with MyFaces
JSF_With_Spring - Use the Spring Framework with MyFaces.
"JSF With PrettyFaces" - Use the PrettyFaces URL Bookmarking Framework with JSF.
JSF and Google Guice Integrating Guice and JSF
MigrateFromJspToFacelets - Step by step instructions to migrate to Facelets.
Facelets_with_Trinidad - To use trinidad components with facelets, you must also create a facelets configuration file.
Use_Facelets_with_Tomahawk - To use tomahawk components with facelets, you must also create a tomahawk.taglib.xml facelets configuration file.
Facelets_Support_within_IDEs - Using Facelets from within various Integrated Development Environments
SEAM_Integration - Integrate Jboss Seam into your application.
Integrating_Ajaxanywhere - See how easy is to "ajaxize" your application.
Myfaces_Eclipse_Setup - Configure eclipse to launch MyFaces applications using tomcat/jetty.
JSF_and_Acegi - Using Java Server Faces with Acegi Security
Java_Studio_Creator_and_MyFaces - Java Studio Creator and MyFaces
AJAX4JSF_and_MyFaces - Using Ajax4JSF with MyFaces
ICEfaces_and_MyFaces - Using ICEfaces with MyFaces and the Tomahawk Components
JSF_Flex - JSF and Flex bridge. Allows creation of Flex applications by normal JSF usage.
Sibling projects
FacesFreeway - An effort to minimize the work for simple input forms (no longer actively developed)
Metawidget - Another effort to minimize the work for input forms
jsf-comp Sourceforge project - Shared community code sandbox.
MyFaces Development and Project Management
MyFaces Development
MyFaces_Developer_Notes - MyFaces developers guidelines
Contributing_Patches - How to attach code changes and other files to the MyFaces issue tracker
EditXdocs - Editing Myfaces xdocs files in the MLMind XML editor
JSR-252 - Info you will need if you are working on the MyFaces JSF 1.2 project
Obsolete/older_MyFaces_Development_pages - Building older versions of MyFaces
Building_MyFaces_in_your_IDE - Building, Debugging and Deploying MyFaces in your IDE
Automated_Testing - Automated testing of MyFaces
Source_Code_Packaging - How MyFaces source code is divided into modules and java packages.
Shared_-_impl_or_tomahawk - Which shared_XXX namespace should I use?
ComponentsCommons - Whiteboard to discuss creation of a 'myfaces-components-commons' jar.
MyFaces Project Management
promotion - Requirements for promotion of a sandbox component
Release_Plans - Plans and notes on individual releases
ReleaseHowTo - The ultimate guide for releasing MyFaces projects
Release_Procedure - @deprecated (Specific instructions for SVN and Maven tasks related to releases)
Deploying_the_Webpage_of_MyFaces - Documentation on deploying the MyFaces webpage
MyFaces_Artifacts - List of Build Artifacts and their Contents
New_Committers - Additional info for new committers
MyFaces_Commons_Refactoring - Checklist for Upcoming Refactoring of MyFaces commons classes
Source_Code_Repository_Structure - Trunks and Branches
Name_Finding - Monitor requests to find names for components/projects/etc
MyFaces Project Infrastructure
Apache_Server - Project Infrastructure, Setup of Apache2 on Solaris Zone
Continuum_Build - Care and feeding of the Continuum build processes on the Zone
Community and Context
Talk, talk, talk
- Channel #myfaces on irc.freenode.net - chat discussion of myfaces issues.
Channel ##jsf on irc.freenode.net - chat discussion of jsf issues. Log can be found on http://uwyn.com/drone/log/bevinbot/%23jsf
With a little help of our friends
How_to_Help - Hints how you can get involved, help to support and contribute to Apache MyFaces
Help_Wanted - Want to contribute? Volunteers needed for this list of tasks.
Acknowledgements - The most important page of this WIKI: saying "Thanks" to people who helped making MyFaces a success!
Random Musings
Spotlight - Articles about MyFaces
What_Tools_Do_You_Use_to_Develop_Web_Applications_Using_JSF - Experiences from fellow developers
References
Powered_by_MyFaces - Projects developed using MyFaces components
Companies_Using_MyFaces - List of companies and institutions using MyFaces in their day to day work
3rd_Party_Contributions - 3rd party tools and APIs that work with MyFaces
On the web
UsefulLinks - Tutorials for JavaServer Faces, MyFaces project activity and other useful links