You are previewing Mastering JavaServer Faces 2.2.
O'Reilly logo
Mastering JavaServer Faces 2.2

Book Description

Master the art of implementing user interfaces with JSF 2.2

In Detail

JavaServer Faces (JSF) is a leading framework and core component of Java Platform Enterprise Edition. JSF is the standard Java EE technology used to build web user interfaces. JSF 2.2 is a recent release with an extensive list of new features, some of which have been expected for a long time and are now ready to be implemented.

Starting out with a very basic topic, Expression Language, you will continue onwards covering a wide range of JSF sectors, such as JSF communication, JSF scopes, and so on. Throughout the book, you will master JSF artifacts (AJAX, HTML5, configurations, renders, handlers, listeners, events, factories, tabular data, custom components, Facelets, and so on) in a compendium of programming practices and informative examples

You then round off with a detailed discussion on the capabilities of Facelets. Overall, this book helps you gain knowledge on the latest JSF features in an interesting and original approach. Adding these skills to your personal arsenal will turn you into a veritable JSF master.

What You Will Learn

  • Discover how to write custom JSF 2.2 themes, custom factories, handlers, renderers, and components
  • Access unlimited developing scenarios with the concept of dependency injection
  • Enhance your applications with JSF 2.2 upload component and HTML5 friendly markup
  • Master the new JSF 2.2 Window ID technique
  • Gain insights into managing the application state with stateless viewsExplore the new CDI @ViewScoped and @FlowScoped (detailed presentation)
  • Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the files e-mailed directly to you.

    Table of Contents

    1. Mastering JavaServer Faces 2.2
      1. Table of Contents
      2. Mastering JavaServer Faces 2.2
      3. Credits
      4. About the Author
      5. About the Reviewers
      6. www.PacktPub.com
        1. Support files, eBooks, discount offers, and more
          1. Why subscribe?
          2. Free access for Packt account holders
          3. Instant updates on new Packt books
      7. Preface
        1. What this book covers
        2. What you need for this book
        3. Who this book is for
        4. Conventions
        5. Reader feedback
        6. Customer support
          1. Downloading the example code
          2. Errata
          3. Piracy
          4. Questions
      8. 1. Dynamic Access to JSF Application Data through Expression Language (EL 3.0)
        1. EL syntax
          1. EL operators
          2. EL precedence of operators
          3. EL reserved words
        2. EL immediate and deferred evaluation
        3. EL value expressions
          1. Referencing a managed bean
          2. Referencing a managed bean's properties
          3. Referencing a managed bean's nested properties
          4. Referencing Java SE enumerated types
          5. Referencing collections
          6. EL implicit objects
        4. EL method expressions
        5. The conditional text in JSF
        6. Writing a custom EL resolver
        7. EL 3.0 overview
          1. Working with the assignment operator
          2. Working with the string concatenation operator
          3. Working with the semicolon operator
          4. Exploring lambda expressions
            1. Working with collection objects
        8. Summary
      9. 2. Communication in JSF
        1. Passing and getting parameters
          1. Using context parameters
          2. Passing request parameters with the <f:param> tag
          3. Working with view parameters
          4. Calling actions on GET requests
          5. Passing attributes with the <f:attribute> tag
          6. Setting property values via action listeners
          7. Passing parameters using the Flash scope
          8. Replacing the <f:param> tag with the JSTL <c:set> tag
          9. Sending data through cookies
          10. Working with hidden fields
          11. Sending passwords
          12. Accessing UI component attributes programmatically
          13. Passing parameters via method expressions
          14. Communicating via the binding attribute
        2. Managed bean communication
          1. Injecting a managed bean into another bean
          2. Communication between managed beans using the application/session map
          3. Accessing other managed beans programmatically
        3. Summary
      10. 3. JSF Scopes – Lifespan and Use in Managed Beans Communication
        1. JSF scopes versus CDI scopes
        2. The request scope
        3. The session scope
        4. The view scope
        5. The application scope
        6. The conversation scope
        7. The flow scope
          1. The simple flow
          2. Flows with beans
          3. Nested flows
          4. Configuring flows programmatically
          5. Flows and navigation cases
          6. Inspecting flow navigation cases
          7. Using the initializer and finalizer
          8. Using the flow switch
          9. Packaging flows
          10. Programmatic flow scope
        8. Dependent pseudo-scope
        9. The none scope
        10. The custom scope
          1. Writing the custom scope class
          2. Resolving a custom scope EL expression
          3. Controlling the custom scope lifespan with action listeners
          4. Controlling the custom scope lifespan with the navigation handler
        11. Managed bean instantiation
        12. Beans injection
        13. Summary
      11. 4. JSF Configurations Using XML Files and Annotations – Part 1
        1. JSF 2.2 new namespaces
        2. JSF 2.2 programmatic configuration
        3. Configuring managed beans in XML
        4. Working with multiple configuration files
        5. Configuring locales and resource bundles
        6. Configuring validators and converters
        7. Configuring navigation
          1. Implicit navigation
          2. Conditional navigation
          3. Preemptive navigation
          4. Programmatic Navigation
        8. Configuring action listeners
          1. Application action listeners
        9. Configuring system event listeners
          1. Using <f:event>
          2. Implementing SystemEventListener
        10. Configuring phase listeners
        11. Working with @ListenerFor and @ListenersFor
        12. Summary
      12. 5. JSF Configurations Using XML Files and Annotations – Part 2
        1. Configuring resource handlers
          1. Adding CSS and JS resources programmatically
        2. Configuring the view handler
        3. Overriding JSF renders
        4. Working with client behavior functionality
        5. JSF factories
          1. Configuring the global exception handler
          2. Configuring RenderKit factory
          3. Configuring PartialViewContext
          4. Configuring visitContext
          5. Configuring ExternalContext
          6. Configuring Flash
          7. JSF 2.2 Window ID API
          8. Configuring lifecycle
          9. Configuring the application
          10. Configuring VDL
        6. Combined power of multiple factories
        7. Summary
      13. 6. Working with Tabular Data
        1. Creating a simple JSF table
        2. The CollectionDataModel class of JSF 2.2
        3. Sorting tables
          1. Sorting and DataModel – CollectionDataModel
        4. Deleting a table row
        5. Editing/updating a table row
        6. Adding a new row
        7. Displaying row numbers
        8. Selecting a single row
        9. Selecting multiple rows
        10. Nesting tables
        11. Paginating tables
        12. Generating tables with the JSF API
        13. Filtering tables
        14. Styling tables
          1. Alternate row colors with the rowclasses attribute
          2. Highlighting rows on mouse hover
          3. Highlighting rows on mouse click
        15. Summary
      14. 7. JSF and AJAX
        1. A brief overview of the JSF-AJAX lifecycle
        2. A simple JSF-AJAX example to get started
        3. The JSF-AJAX attributes
          1. The execute and render attributes
          2. The listener attribute
          3. The event attribute
          4. The onevent attribute – monitoring AJAX state on client
          5. The onerror attribute – monitoring AJAX errors on client
        4. Grouping components under <f:ajax> tag
        5. Updating input fields with AJAX after validation error
          1. The Cancel and Clear buttons
            1. Value submitted to a view scoped managed bean
            2. Value submitted to a request scoped managed bean
        6. Mixing AJAX and flow scope
        7. Postback and AJAX
          1. Postback request's conditional rendering/executing
        8. Is it a non-AJAX request?
        9. AJAX and <f:param>
        10. Queue control for AJAX requests
        11. Explicit loading of jsf.js
          1. Depicting the params value
          2. Non-UICommand components and jsf.ajax.request
          3. Customizing jsf.js
        12. AJAX and the progress bar/indicator
        13. Summary
      15. 8. JSF 2.2 – HTML5 and Upload
        1. Working with HTML5 and JSF 2.2
          1. Pass-through attributes
          2. Pass-through elements
          3. JSF 2.2 – HTML5 and Bean Validation 1.1 (Java EE 7)
        2. JSF 2.2 upload feature
          1. A simple JSF 2.2 upload example
          2. Using multiple <h:inputFile> elements
          3. Extracting info about a file to be uploaded
          4. Writing uploaded data to a disk
          5. Upload validator
          6. Ajaxify the upload
          7. Uploading images with preview
          8. Uploading multiple files
          9. Upload and the indeterminate progress bar
          10. Upload and the determinate progress bar
        3. Summary
      16. 9. JSF State Management
        1. JSF saving the view state
          1. JSF partial saving view state
          2. Partial state saving and tree visiting
          3. JSF saving view state on the server or client
          4. JSF logical and physical views
          5. Saving the state in a database – an experimental application
            1. Writing the custom ResponseStateManager class
            2. Adding MongoDB in equation
          6. Handling ViewExpiredException
          7. Server-state serialization in a session
        2. JSF 2.2 is stateless
          1. The view scoped beans and the stateless feature
          2. Detecting stateless views programmatically
        3. JSF security notes
          1. Cross-site request forgery (CSRF)
          2. Cross-site scripting (XSS)
          3. SQL injection
        4. Summary
      17. 10. JSF Custom Components
        1. Building noncomposite custom components
          1. Writing a custom tag handler
          2. Dissecting a custom component
            1. Custom component implementation
        2. Building composite components
          1. Developing the Temperature composite component
          2. Transforming a jQuery component into composite component
          3. Writing the HTML5 date picker as a composite component
          4. Decorating an image with actions
          5. Working with composite facets
          6. Validating/converting inputs inside composite components
          7. Checking the presence of an attribute
          8. Composite components' pitfalls
            1. Null values within a composite component's attributes
          9. Hiding pass-through attributes in composite components
            1. Counting the children of a composite component
            2. Top-level component's pitfall
          10. Distributing composite components as JARs in JSF 2.2
          11. Adding composite components programmatically
        3. Summary
      18. 11. JSF 2.2 Resource Library Contracts – Themes
        1. Working with contracts
        2. Styling tables with contracts
        3. Styling UI components with contracts
        4. Styling contracts across different devices
        5. Writing contracts for composite components
        6. Writing a theme switcher
        7. Configuring contracts in XML
        8. Packaging contracts in JARs
        9. Summary
      19. 12. Facelets Templating
        1. A brief overview of the Facelets tags
        2. Creating a simple template – PageLayout
        3. Passing parameters via <ui:param>
        4. Passing bean properties and action methods via <ui:param>
        5. Exploiting the <ui:decorate> and <ui:fragment> tags
        6. Iterating with <ui:repeat>
        7. Working with <ui:include> and <f:viewParam>
        8. Working with <ui:include> and <ui:param>
        9. Debugging with <ui:debug>
        10. Removing the content with <ui:remove>
        11. Using the jsfc attribute
        12. Extending the PageLayout template
        13. Facelets' programmatic aspects
          1. FaceletFactory considerations
          2. Working with FaceletCache
          3. ResourceResolver swallowed by ResourceHandler
          4. Include Facelets programmatically
          5. Creating a TagHandler class
          6. Writing custom Facelets taglib functions
        14. Facelets pitfalls
          1. AJAX and <ui:repeat>
          2. Exemplifying <c:if> versus <ui:fragment>
          3. Exemplifying <c:forEach> versus <ui:repeat>
        15. Summary
      20. A. The JSF Life Cycle
      21. Index