##language:en #pragma section-numbers off = 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 [[http://jakarta.apache.org/tapestry|Tapestry framework]] as that is also a component-based framework. JSF can also fill the same "niche" as the well-known [[http://jakarta.apache.org/struts/|Struts framework]], but has a rather different approach. The [[http://java.sun.com/j2ee/javaserverfaces/|Sun JavaServer Faces(tm) Page]] has information about the [[http://www.jcp.org/en/jsr/detail?id=252|JSF-1.2]] (and older [[http://www.jcp.org/en/jsr/detail?id=127|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: * http://www.irian.at/myfaces.jsf See a !MyFaces real world use case at !JavaWorld * http://www.javaworld.com/javaworld/jw-07-2006/jw-0731-myfaces.html. See the dojoFacelets in action: * http://www.j4fry.org/JSFExamples20/page/dojo.faces 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. * [[http://wiki.apache.org/myfaces/forceId#head-801527c2f31f404d73f943966595e2d0dd200d76|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 === * [[From_1.0.9m9_to_1.1.0]] * [[From 1.1.0 to 1.1.1]] * [[From 1.1.x to nightly]] * [[From_1.1.1_to_1.1.3_with_Jboss]] * [[Upgrading_to_Tomahawk_1.1.3]] * [[More_tips_on_Upgrading_to_Tomahawk_1.1.3]] * [[Tomahawk_1.1.4_to_1.1.5]] === 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. * [[http://ocpsoft.com/prettyfaces|"JSF With PrettyFaces"]] - Use the PrettyFaces URL Bookmarking Framework with JSF. * [[http://notdennisbyrne.blogspot.com/2007/09/integrating-guice-and-jsf.html|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) * [[http://www.metawidget.org|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 ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ## FROM HERE DOWN IS JUST DEFAULT WIKI JUNK PLACE ADDITIONAL CONTENT ABOVE THIS ## ---------------------------------------------------------------------------- ##= 'Special' Wiki pages = ## ## '''TitleIndex''' ## A list of all pages on this wiki. ## ## '''HelpContents''' ## A basic guide to the MoinMoin wiki (including information about wiki syntax). ## ## '''WordIndex''' ## A list of all the words that appear in the titles of the pages on this wiki, with links to pages that include that ##word. ## ## '''FindPage''' ## A full-text search of the wiki. ## ## '''WantedPages''' ## All the "broken links" -- a list of all the pages on this wiki that are linked to, but do not exist. ## ## '''OrphanedPages''' ## All pages on this wiki that are not linked to from anywhere else (and are thus very hard to reach). ## ## '''RandomPage''' ## Generates a list of 75 random pages on this wiki. ## ## '''PageSize''' ## Generates a graph and some statistics about the sizes of pages on this wiki. ## ## '''EventStats/HitCounts''' ## Generates a graph of page views and page visits. ## ## '''EventStats/UserAgents''' ## Generates a graph of the web browsers used in visiting this page. ## ## '''SystemInformation''' ## Shows basic information about this wiki installation, the extensions it has installed, etc. ##