SlideShare a Scribd company logo
1 of 86
Download to read offline
Exadel



RichFaces 4 Webinar Series

Webinar #2:
RichFaces 3 to RichFaces 4 —
A Class in Moving Up

May 11, 2011

Max Katz
Charley Cowens
http://exadel.com/web/portal/webinars
Exadel



RichFaces 4 Webinar
Schedule


June 15, 2011
RichFaces 4 – New and Advanced
Features
Exadel




Max Katz
● Senior   Systems Engineer
● JSF,RichFaces, Java EE consulting,
 and training
● Manages exadel.org – Exadel's open
 source projects and community
● Community    manager for gotiggr.com
 – tool for creating and sharing
 interactive web and mobile HTML
 prototypes
Exadel




                                          4
                        Summer 2011




    Author of             Lead-author of
Practical RichFaces   Practical RichFaces, 2/e
     (Apress)           (Apress, July 2011)
Exadel




Exadel is a global software
engineering company.
● Founded in 1998,


  headquarters in San Francisco
  Bay Area
● 7 development offices in


  Europe
● 350+ employees
Exadel




What Exadel Does
Services
●   Professional services, rich enterprise
    application development, Eclipse
    development, custom rich component
    development, mobile development, training
Products
●   Open source with JBoss: RichFaces, JBoss
    Tools/JBoss Developer Studio; exadel.org:
    Flamingo, Fiji, jsf4birt, JavaFX Plug-in for
    Eclipse; gotiggr.com– interactive Web and
    mobile HTML prototypes
Exadel




The Plan Is Simple


1) Review the New RichFaces 4

2) Moving up from RichFaces
3 to RichFaces 4
Exadel




RichFaces 4 is a lightweight,
open source framework for
          JSF 2
Exadel




RichFaces 4 – rich JSF framework
   ● UI components

     ◦ a4j:* tag library (core)
     ◦ rich:* tag library (UI)
     ◦ Components' JavaScript API
   ● Skins
   ● Client-side   validation (Bean Validation
    based)
   ● CDK –   Component Development Kit
Exadel




RichFaces 4


  100% built on top of JSF2,
 just extends functionality in
            JSF 2
Exadel




RichFaces 4


 JavaScript is now entirely
based on the popular jQuery
          library
Exadel




RichFaces 4
● All components are reviewed for
 consistency, usability
● Redesigned following    semantic
 HTML principles
● Server-side
           and client-side
 performance optimization
● Strict   code clean-up and review
Exadel




RichFaces 4


     Zero-configuration.
Just drop RichFaces into the
        application.
Exadel




RichFaces 4


 New client-side validation
 based on Bean Validation
         (JSR 303)
Exadel




RichFaces 4


  New, and easy to use CDK
   (Component Development Kit),
 allows quickly to build your
own custom rich components
Exadel




RichFaces 4


Run on: Tomcat 6/7, Resin,
JBoss AS 6/7, GlassFish 3.x,
             WebLogic
(run on any server when JSF 2 application
            can be deployed)
Exadel




RichFaces 4


 Run on: Google App Engine
   (GAE), Amazon EC2,
         CloudBees
Exadel




RichFaces 4


   JSF implementations:
    Mojarra or Myfaces
Exadel




RichFaces 4


        Any browser
Exadel




RichFaces 4


  Tooling support through
   JBoss Tools, IntelliJ,
         NetBeans
Exadel




 RichFaces versions


       Version             JSF 1.1       JSF 1.2   JSF 2


RichFaces 3.1.x              •
RichFaces 3.3.3*                            •       •
RichFaces 4                                         •
* Note: RichFaces 3.3.3 has basic JSF 2 support
Exadel




RichFaces 4


 Let's quickly look at some
 RichFaces features in more
           detail...
Exadel




RichFaces 4 core – sending
an Ajax request
a4j:ajax
a4j:commandButton
a4j:commandLink
a4j:jsFunction
a4j:poll
a4j:push
Exadel




      <a4j:commandButton/Link>
        – built-in Ajax behavior


/* RichFaces button */
<a4j:commandButton value="Save"
     render="output"
     action="#{bean.action}" />
Exadel




      <a4j:jsFunction> – fire Ajax
      request from any JavaScript
      function, HTML event
<table>
   ...
   <td onmouseover="update('yellow')"/>
   ...
</table>

<h:form>
 <a4j:jsFunction name="update"
      action="#{bean.change}" render="...">
   <a4j:param value="param1" assignTo="#{bean.color}"/>
 </a4j:jsFunction>
</h:form>
Exadel



      <a4j:poll> – periodically
      send an Ajax request

<a4j:poll interval="1000"
          action="#{bean.count}"
          render="output"
          enabled="#{bean.pollEnabled}" />

<h:panelGrid id="output">
...
</h:panelGrid>
Exadel




      <a4j:push>
       ● Server-side  events are pushed to
         client using Comet or WebSockets.
       ● Implemented    using Atmosphere
       ● Providesexcellent integration with
         EE containers, and advanced
         messaging services

<a4j:push address="topic@chat"
     ondataavailable="alert(event.rf.data)" />
Exadel




RichFace 4 core – advanced
rendering features
<a4j:outputPanel>
Exadel



      <a4j:outputPanel> – auto
      rendered panel

<h:selectOneMenu value="#{bean.fruit}">
   <a4j:ajax listener="#{bean.change}"/>
</<h:selectOneMenu>


<a4j:outputPanel ajaxRendered="true">
   <h:panelGrid>
      ...
   </h:panelGrid>                          Rendered on every
</a4j:outputPanel>                         Ajax request
Exadel




RichFace 4 core – advanced
execute features
<a4j:region>
Exadel



<a4j:region> – declaratively
define execute region

<h:form>
 <a4j:region>
   <h:inputText />
   <h:inputText />
   <a4j:commandButton />
 <a4j:region>
</h:form>
Exadel




RichFace 4 core – more
advanced features and tags
Client queue
a4j:status
a4j:param
a4j:log
Exadel




RichFaces queue
● JSF2 has very basic queue
 functionality
● RichFaces   enhancements
  ◦ Combining requests from the same or
    different components
  ◦ Setting request delay
  ◦ Ignoring “stale” responses
Exadel



      <a4j:status> – Ajax request
      status



<a4j:status name="ajaxStatus">
  <f:facet name="start">
    <h:graphicImage value="ajaxStatus.jpg"/>
  </f:facet>
</a4j:status>

<h:form>
   <a4j:commandButton status="ajaxStatus"/>
</h:form>
Exadel




      <a4j:param>
       ● Similar to <f:param>   but simpler as it
         also assigns the value to a bean
         property automatically
<a4j:commandButton value="Save">
   <a4j:param name="#{bean.product}" value="1009"/>
</a4j:commandButton>

@ManagedBean
public class Bean {
   private String product;
   // setter and getter
}
Exadel



<a4j:log> – Ajax request
information
● Levels:

  ◦ debug, info, warn, error
Exadel




RichFaces UI components
● Output, panels
● Input
● Menu
● Data iteration
● Tree
● Drag   and drop
● Client   side validation
● Miscellaneous
Exadel
Exadel




All RichFaces data iteration
components support partial
         updates
Exadel




             Partial table update

                         render="@column"
                                                              render="@header"

render="@row"
                                                               render="@body"

                                                              render="@footer"



                                            render="cellId"
 To render from outside the table:
 render="tableId@header"
 render="tableId@body"
 render="tableId@footer"
Exadel




              Partial table update
render="tableId:rows(bean.rowsSet)"




render="tableId:rows(bean.rowsSet):cellId"
Exadel




Client-side validation based
    on Bean Validation
         (JSR 303)

    New in RichFaces 4
Exadel




    RichFaces client validation
        <rich:validator>

public class Bean {
  @Pattern(regexp="...")
  private String email;
}


<h:inputText id="email" value="#{bean.email}">
   <rich:validator/>
</h:inputText>
<rich:message for="email"/>
Exadel



Many RichFaces components
provide client-side JavaScript API
<rich:popupPanel> JavaScript API
Method name            Description
                       Return the top co-ordinate for the position of
getTop()
                       the pop-up panel.
                       Return the left co-ordinate for the position of
getLeft()
                       the pop-up panel.
                       Move the pop-up panel to the co-ordinates
moveTo(top,left)
                       specified with the top and left parameters.
                       Resize the pop-up panel to the size specified
resize(width,height)
                       with the width and height parameters.
show()                 Show the pop-up panel.
hide()                 Hide the pop-up panel.
Exadel



 Using #rich:component() to
 show/hide pop-up panel
<input type="button"
       onclick="#{rich:component('popup')}.show();"
       value="Open" />

<rich:popupPanel id="popup">
   <h:outputLink value="#"
        onclick="#{rich:component('popup')}.hide();
           return false;">
          <h:outputText value="Close"/>
    </h:outputLink>
</rich:popupPanel>
Exadel




Skins
Exadel




Skins
● Lightweight   extension on top of CSS
● Change
       look and feel of all rich
 component with a few minor changes
● Apply to standard JSF   and HTML
 tags
Exadel




Ready-to-use skins
● classic       <context-param>
                  <param-name>org.richfaces.skin</param-name>
● wine            <param-value>ruby</param-value>
                </context-param>
● blueSky
● ruby
● emeraldTown
● deepMarine
● plain
● japanCherry
Exadel




Moving from RichFaces 3 to
      RichFaces 4...
Exadel




Things to know before
     upgrading
Exadel




JSF 1.x to JSF 2


 ● Migrating
           to RichFaces 4 will
  automatically mean you are also
  upgrading to JSF 2
Exadel




Yey! No more JSP!


 ● JSP   no longer supported
 ● Must   use Facelets with RichFaces 4
Exadel




Seam

● Seam   2 doesn't work with JSF 2
● Consider
         using Seam 3 with
 RichFaces 4
Exadel




 RichFaces filter configuration in
web.xml file is no longer required


Just drop RichFaces Jars into the
          application


 There are still optional context
    parameters (skins, etc)
Exadel




a4j:* tab library changes
Exadel




<a4j:ajax> is 100% based on the
standard <f:ajax> behavior:

      RichFaces 3           RichFaces 4

     <a4j:support>          <a4j:ajax>


But, the concepts stay the same:
1)How to send an Ajax request
2)Partial view processing
3)Partial view rendering
Exadel




Important core attribute changes
          RichFaces 3            RichFaces 4
reRender                render

event=onclick           event=click

limitToList             limitRender

ajaxSingle              execute=@this


                        execute
process                 @all, @form, @this, @none, id's,
                        EL, @region
Exadel




       RichFaces 3            RichFaces 4
<a4j:commandButton>,   <a4j:commandButton>,
<a4j:commandLink>      <a4j:commandLink>
<a4j:poll>             <a4j:poll>

<a4j:jsFunction>       <a4j:jsFunction>

<a4j:status>           <a4j:status>
<a4j:log>              <a4j:log>
Exadel




    RichFaces 3                 RichFaces 4

<a4j:status>        <a4j:status>

<a4j:log>           <a4j:log>

<a4j:mediaOutput>   <a4j:mediaOutput>
Exadel




Other changes:

      RichFaces 3             RichFaces 4

<a4j:actionParam>   <a4j:param>
                    <a4j:push>
<a4j:push>
                    Component completely redesigned

<a4j:region>        <a4j:region>

                    <a4j:actionListener>
                    Registers a listener on a
N/A
                    component and allows simple
                    method binding
Exadel




No longer in RichFaces 4 as now part of
JSF 2:
● <a4j:loadScript>
● <a4j:loadStyle>
● <a4j:keepAlive>

No longer in RichFaces 4:
● <a4j:form>
● <a4j:ajaxListener>
Exadel


To redefine queue setting by individual
components, a new <a4j:attachQueue> tag
was introduced:
<a4j:queue />
...
<a4j:commandButton>
   <a4j:attachQueue requestDelay="1000"
        requestGroupingId="ajaxGroup" />
</a4j:commmandButton>



      RichFaces 3            RichFaces 4

<a4j:queue>         <a4j:queue>

N/A                 <a4j:attachQueue>
Exadel




rich:* tag library changes
Exadel


Rich inputs
         RichFaces 3                RichFaces 4

<rich:calendar>            <rich:calendar>

<rich:inplaceInput>        <rich:inplaceInput>

<rich:inplaceSelect>       <rich:inplaceSelect>

<rich:inputNumberSlider>   <rich:inputNumberSlider>
<rich:inputNumerSpinner>   <rich:inputNumerSpinner>

<rich:suggestionBox>       <rich:autocomplete>

<rich:comboBox>            Merged with
                           <rich:autocomplete>
N/A                        <rich:select>
Exadel




Inputs that didn't make it...
       RichFaces 3          RichFaces 4

<rich:colorPicker>   Not in Final, planned

<rich:editor>        Not in Final, planned
Exadel


Rich output/panels
          RichFaces 3                   RichFaces 4
<rich:panel>                  <rich:panel>

<rich:modalPanel>             <rich:popupPanel>

<rich:panelBar>               <rich:accordion>

<rich:simpleTogglePanel>      <rich:collapsiblePanel>

<rich:tab>, <rich:tabPanel>   <rich:tab>, <rich:tabPanel>

<rich:togglePanel>            <rich:togglePanel>

<rich:toolBar>                <rich:toolbar>

<rich:progressBar>            <rich:progressBar>

<rich:toolTip>                <rich:tooltip>
Exadel




Outputs that didn't make it...
       RichFaces 3          RichFaces 4

<rich:paint2D>       Possible with JSF 2

<rich:separator>     Use <hr/> with styling
                     Doesn't satisfy semantic
<rich:spacer>
                     markup principles
Exadel




Rich selects/ordering
       RichFaces 3           RichFaces 4

<rich:orderingList>   Not in Final, planned

<rich:listShuttle>    Not in Final, planned

<rich:pickList>       Not in Final, planned
Exadel




Rich menu
       RichFaces 3           RichFaces 4

<rich:toolBar>        <rich:toolBar>

<rich:dropDownMenu>   <rich:toolBar>

<rich:panelMenu>      <rich:panelMenu>
<rich:contextMenu>    Not in Final, planned.
Exadel


Rich data iteration
        RichFaces 3                    RichFaces 4

<rich:dataTable>             <rich:dataTable>

<rich:dataGrid>              <rich:dataGrid>

<rich:datascroller>          <rich:dataScroller>

<a4j:repeat>                 <a4j:repeat>
<rich:extendedDataTable>
                             <rich:extendedDataTable>
<rich:scrollableDataTable>
<rich:dataList>
<rich:dataOrderingList>      <rich:list>
<rich:dataDefintionList>
N/A                          <rich:collapsibleSubTable>
Exadel




Rich data iteration didn't make it
         RichFaces 3               RichFaces 4

<rich:columns>            Not in Final

<rich:subTable>           Not in Final

<rich:dataFilterSlider>   Not in Final
Exadel




Validation
       RichFaces 3             RichFaces 4
                        Client validation:
<rich:ajaxValidator>
                        <a4j:validator>
                        No longer needed. Support
<rich:beanValidator>
                        via JSF 2
<rich:graphValidator>   <rich:graphValidator>

<rich:message>          <rich:message>
<rich:messages>         <rich:messages>
Exadel




Rich trees

Pretty much all version 3
functionality is in RichFaces 4
Exadel




Rich drag and drop

Pretty much all version 3
functionality is in RichFaces 4
Exadel




Rich miscellaneous
      RichFaces 3                RichFaces 4

<rich:componentControl>   <rich:componentControl>

<rich:jQuery>             <rich:jQuery>
                          <rich:hashParam>
                          Groups parameters into
N/A                       hash parameter to be
                          passed to components via
                          JavaScript API.
Exadel



Rich miscellaneous that didn't make it
       RichFaces 3           RichFaces 4

<rich:effect>         Not in Final

<rich:gmap>           Not in Final, planned

<rich:virtualEarth>   Not in Final, planned
                      Available as custom
<rich:insert>         component. See RichFaces
                      components showcase.
<rich:hotKey>         Not in Final. Use jQuery.
                      Not in Final. Use YUI or
Layout components
                      HTML.
Exadel




A note on Not in Final
Component is not in 4.0.0 but many will
be added in 4.x release


Get involved in RichFaces community,
and let everyone know what you want!
Exadel




Skins

Skins probably had the least
changes
Exadel




Context parameter to set default
application skin
      RichFaces 3            RichFaces 4

org.richfaces.SKIN
                      org.richfaces.skin
org.ajax4jsf.SKIN
Exadel




Skins in RichFaces 4
       Migrated              Not migrated
●blueSky               ●laguna
●emeraldTown           ●darkX

●ruby                  ●glassX

●classic

●japanCherry

●wine

●deepMarine

●NULL

●DEFAULT

●plain
Exadel



     Where can I try the new
         RichFaces 4?
http://livedemo.exadel.com/richfaces4-demo
Exadel




        How can we help with RichFaces
● Web development
 with RichFaces
                                     Training      Days
● Version   3 to 4 migration   JSF 1.2, 2          1-2
● Performance    tune-up       RichFaces 3, 4      1-2
                               JSF and RichFaces   2-3
● Custom    component          RichFaces 3 to 4    1-2

 development
● On-site training
Exadel




That's it for RichFaces, there
 is one more thing I want to
           show you.
Exadel




Create your first interactive prototype at http://gotiggr.com
Exadel




Tiggr (gotiggr.com) is a web
application for building and
sharing interactive web and
 mobile HTML prototypes
Exadel




        max@exadel.com

Thank   @maxkatz
 you!
        mkblog.exadel.com

        gotiggr.com

More Related Content

What's hot

Import export.odp
Import export.odpImport export.odp
Import export.odp
Oro Inc.
 

What's hot (20)

A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
 
Securing JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenSecuring JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top Ten
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
 
#JavaFX.forReal()
#JavaFX.forReal()#JavaFX.forReal()
#JavaFX.forReal()
 
RichFaces 4 Component Deep Dive - JAX/JSFSummit
RichFaces 4 Component Deep Dive - JAX/JSFSummitRichFaces 4 Component Deep Dive - JAX/JSFSummit
RichFaces 4 Component Deep Dive - JAX/JSFSummit
 
第二回Salesforce勉強会
第二回Salesforce勉強会第二回Salesforce勉強会
第二回Salesforce勉強会
 
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
 
Escape from the automation hell
Escape from the automation hellEscape from the automation hell
Escape from the automation hell
 
JSF 2.0 Preview
JSF 2.0 PreviewJSF 2.0 Preview
JSF 2.0 Preview
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8
 
Import export.odp
Import export.odpImport export.odp
Import export.odp
 
Php Unit With Zend Framework Zendcon09
Php Unit With Zend Framework   Zendcon09Php Unit With Zend Framework   Zendcon09
Php Unit With Zend Framework Zendcon09
 
AtlasCamp 2011: Confluence 4 and Beyond
AtlasCamp 2011: Confluence 4 and BeyondAtlasCamp 2011: Confluence 4 and Beyond
AtlasCamp 2011: Confluence 4 and Beyond
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
 
Partnering For Growth
Partnering For GrowthPartnering For Growth
Partnering For Growth
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with Laravel
 
Using the Features API
Using the Features APIUsing the Features API
Using the Features API
 
Plugins unplugged
Plugins unpluggedPlugins unplugged
Plugins unplugged
 
XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011
 

Similar to RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4

RichFaces: rich:* component library
RichFaces: rich:* component libraryRichFaces: rich:* component library
RichFaces: rich:* component library
Max Katz
 
Going Above JSF 2.0 with RichFaces and Seam
Going Above JSF 2.0 with RichFaces and SeamGoing Above JSF 2.0 with RichFaces and Seam
Going Above JSF 2.0 with RichFaces and Seam
Lincoln III
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Fabio Franzini
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
Skills Matter
 

Similar to RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4 (20)

Hands On With Rich Faces 4 - JavaOne 2010
Hands On With Rich Faces 4 - JavaOne 2010Hands On With Rich Faces 4 - JavaOne 2010
Hands On With Rich Faces 4 - JavaOne 2010
 
RichFaces: rich:* component library
RichFaces: rich:* component libraryRichFaces: rich:* component library
RichFaces: rich:* component library
 
Ajax Applications with JSF 2 and new RichFaces 4 - Herbstcampus
Ajax Applications with JSF 2 and new RichFaces 4 - HerbstcampusAjax Applications with JSF 2 and new RichFaces 4 - Herbstcampus
Ajax Applications with JSF 2 and new RichFaces 4 - Herbstcampus
 
Introduction to RichFaces
Introduction to RichFacesIntroduction to RichFaces
Introduction to RichFaces
 
Extending eZ Platform v2 with Symfony and React
Extending eZ Platform v2 with Symfony and ReactExtending eZ Platform v2 with Symfony and React
Extending eZ Platform v2 with Symfony and React
 
Going Above JSF 2.0 with RichFaces and Seam
Going Above JSF 2.0 with RichFaces and SeamGoing Above JSF 2.0 with RichFaces and Seam
Going Above JSF 2.0 with RichFaces and Seam
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Extending eZ Platform 2.x with Symfony and React
Extending eZ Platform 2.x with Symfony and ReactExtending eZ Platform 2.x with Symfony and React
Extending eZ Platform 2.x with Symfony and React
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
 
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
 
JSF2
JSF2JSF2
JSF2
 
vJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemvJUG - The JavaFX Ecosystem
vJUG - The JavaFX Ecosystem
 
Ajax Applications with RichFaces and JSF 2
Ajax Applications with RichFaces and JSF 2Ajax Applications with RichFaces and JSF 2
Ajax Applications with RichFaces and JSF 2
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and Ecosystem
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
 
Simplify your professional web development with symfony
Simplify your professional web development with symfonySimplify your professional web development with symfony
Simplify your professional web development with symfony
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
 
Jsf2 html5-jazoon
Jsf2 html5-jazoonJsf2 html5-jazoon
Jsf2 html5-jazoon
 

More from Max Katz

More from Max Katz (14)

Using cloud tools to build enterprise mobile apps with APIs fast
Using cloud tools to build enterprise mobile apps with APIs fast Using cloud tools to build enterprise mobile apps with APIs fast
Using cloud tools to build enterprise mobile apps with APIs fast
 
Wolters Kluwer Tech. Conference: Disrupting Mobile Development
Wolters Kluwer Tech. Conference: Disrupting Mobile DevelopmentWolters Kluwer Tech. Conference: Disrupting Mobile Development
Wolters Kluwer Tech. Conference: Disrupting Mobile Development
 
Tiggzi at DC jQuery Meetup
Tiggzi at DC jQuery MeetupTiggzi at DC jQuery Meetup
Tiggzi at DC jQuery Meetup
 
Learn How to Build Mobile Apps Using Cloud Services
Learn How to Build Mobile Apps Using Cloud ServicesLearn How to Build Mobile Apps Using Cloud Services
Learn How to Build Mobile Apps Using Cloud Services
 
Tiggr Mobile Apps Builder at Silicon Valley HTML5 Group Meetup
Tiggr Mobile Apps Builder at Silicon Valley HTML5 Group MeetupTiggr Mobile Apps Builder at Silicon Valley HTML5 Group Meetup
Tiggr Mobile Apps Builder at Silicon Valley HTML5 Group Meetup
 
Tiggr - Web-based IDE for Mobile Web And Native Apps
Tiggr - Web-based IDE for Mobile Web And Native AppsTiggr - Web-based IDE for Mobile Web And Native Apps
Tiggr - Web-based IDE for Mobile Web And Native Apps
 
Building Mobile Apps With jQuery For Any Device In The Cloud
Building Mobile Apps With jQuery For Any Device In The Cloud Building Mobile Apps With jQuery For Any Device In The Cloud
Building Mobile Apps With jQuery For Any Device In The Cloud
 
Mobile Development Choices: Native Apps vs. Web Apps at JAX 2011
Mobile Development Choices: Native Apps vs. Web Apps at JAX 2011Mobile Development Choices: Native Apps vs. Web Apps at JAX 2011
Mobile Development Choices: Native Apps vs. Web Apps at JAX 2011
 
Devoxx2010 - Mobile Development Choices: Native Apps vs Web Apps
Devoxx2010 - Mobile Development Choices: Native Apps vs Web AppsDevoxx2010 - Mobile Development Choices: Native Apps vs Web Apps
Devoxx2010 - Mobile Development Choices: Native Apps vs Web Apps
 
RichFaces skins
RichFaces skinsRichFaces skins
RichFaces skins
 
RichFaces: more concepts and features
RichFaces: more concepts and featuresRichFaces: more concepts and features
RichFaces: more concepts and features
 
Rich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXRich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFX
 
Building RIA Applications with JavaFX
Building RIA Applications with JavaFXBuilding RIA Applications with JavaFX
Building RIA Applications with JavaFX
 
Building RIA Applications with RichFaces
Building RIA Applications with RichFacesBuilding RIA Applications with RichFaces
Building RIA Applications with RichFaces
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4

  • 1. Exadel RichFaces 4 Webinar Series Webinar #2: RichFaces 3 to RichFaces 4 — A Class in Moving Up May 11, 2011 Max Katz Charley Cowens http://exadel.com/web/portal/webinars
  • 2. Exadel RichFaces 4 Webinar Schedule June 15, 2011 RichFaces 4 – New and Advanced Features
  • 3. Exadel Max Katz ● Senior Systems Engineer ● JSF,RichFaces, Java EE consulting, and training ● Manages exadel.org – Exadel's open source projects and community ● Community manager for gotiggr.com – tool for creating and sharing interactive web and mobile HTML prototypes
  • 4. Exadel 4 Summer 2011 Author of Lead-author of Practical RichFaces Practical RichFaces, 2/e (Apress) (Apress, July 2011)
  • 5. Exadel Exadel is a global software engineering company. ● Founded in 1998, headquarters in San Francisco Bay Area ● 7 development offices in Europe ● 350+ employees
  • 6. Exadel What Exadel Does Services ● Professional services, rich enterprise application development, Eclipse development, custom rich component development, mobile development, training Products ● Open source with JBoss: RichFaces, JBoss Tools/JBoss Developer Studio; exadel.org: Flamingo, Fiji, jsf4birt, JavaFX Plug-in for Eclipse; gotiggr.com– interactive Web and mobile HTML prototypes
  • 7. Exadel The Plan Is Simple 1) Review the New RichFaces 4 2) Moving up from RichFaces 3 to RichFaces 4
  • 8. Exadel RichFaces 4 is a lightweight, open source framework for JSF 2
  • 9. Exadel RichFaces 4 – rich JSF framework ● UI components ◦ a4j:* tag library (core) ◦ rich:* tag library (UI) ◦ Components' JavaScript API ● Skins ● Client-side validation (Bean Validation based) ● CDK – Component Development Kit
  • 10. Exadel RichFaces 4 100% built on top of JSF2, just extends functionality in JSF 2
  • 11. Exadel RichFaces 4 JavaScript is now entirely based on the popular jQuery library
  • 12. Exadel RichFaces 4 ● All components are reviewed for consistency, usability ● Redesigned following semantic HTML principles ● Server-side and client-side performance optimization ● Strict code clean-up and review
  • 13. Exadel RichFaces 4 Zero-configuration. Just drop RichFaces into the application.
  • 14. Exadel RichFaces 4 New client-side validation based on Bean Validation (JSR 303)
  • 15. Exadel RichFaces 4 New, and easy to use CDK (Component Development Kit), allows quickly to build your own custom rich components
  • 16. Exadel RichFaces 4 Run on: Tomcat 6/7, Resin, JBoss AS 6/7, GlassFish 3.x, WebLogic (run on any server when JSF 2 application can be deployed)
  • 17. Exadel RichFaces 4 Run on: Google App Engine (GAE), Amazon EC2, CloudBees
  • 18. Exadel RichFaces 4 JSF implementations: Mojarra or Myfaces
  • 19. Exadel RichFaces 4 Any browser
  • 20. Exadel RichFaces 4 Tooling support through JBoss Tools, IntelliJ, NetBeans
  • 21. Exadel RichFaces versions Version JSF 1.1 JSF 1.2 JSF 2 RichFaces 3.1.x • RichFaces 3.3.3* • • RichFaces 4 • * Note: RichFaces 3.3.3 has basic JSF 2 support
  • 22. Exadel RichFaces 4 Let's quickly look at some RichFaces features in more detail...
  • 23. Exadel RichFaces 4 core – sending an Ajax request a4j:ajax a4j:commandButton a4j:commandLink a4j:jsFunction a4j:poll a4j:push
  • 24. Exadel <a4j:commandButton/Link> – built-in Ajax behavior /* RichFaces button */ <a4j:commandButton value="Save" render="output" action="#{bean.action}" />
  • 25. Exadel <a4j:jsFunction> – fire Ajax request from any JavaScript function, HTML event <table> ... <td onmouseover="update('yellow')"/> ... </table> <h:form> <a4j:jsFunction name="update" action="#{bean.change}" render="..."> <a4j:param value="param1" assignTo="#{bean.color}"/> </a4j:jsFunction> </h:form>
  • 26. Exadel <a4j:poll> – periodically send an Ajax request <a4j:poll interval="1000" action="#{bean.count}" render="output" enabled="#{bean.pollEnabled}" /> <h:panelGrid id="output"> ... </h:panelGrid>
  • 27. Exadel <a4j:push> ● Server-side events are pushed to client using Comet or WebSockets. ● Implemented using Atmosphere ● Providesexcellent integration with EE containers, and advanced messaging services <a4j:push address="topic@chat" ondataavailable="alert(event.rf.data)" />
  • 28. Exadel RichFace 4 core – advanced rendering features <a4j:outputPanel>
  • 29. Exadel <a4j:outputPanel> – auto rendered panel <h:selectOneMenu value="#{bean.fruit}"> <a4j:ajax listener="#{bean.change}"/> </<h:selectOneMenu> <a4j:outputPanel ajaxRendered="true"> <h:panelGrid> ... </h:panelGrid> Rendered on every </a4j:outputPanel> Ajax request
  • 30. Exadel RichFace 4 core – advanced execute features <a4j:region>
  • 31. Exadel <a4j:region> – declaratively define execute region <h:form> <a4j:region> <h:inputText /> <h:inputText /> <a4j:commandButton /> <a4j:region> </h:form>
  • 32. Exadel RichFace 4 core – more advanced features and tags Client queue a4j:status a4j:param a4j:log
  • 33. Exadel RichFaces queue ● JSF2 has very basic queue functionality ● RichFaces enhancements ◦ Combining requests from the same or different components ◦ Setting request delay ◦ Ignoring “stale” responses
  • 34. Exadel <a4j:status> – Ajax request status <a4j:status name="ajaxStatus"> <f:facet name="start"> <h:graphicImage value="ajaxStatus.jpg"/> </f:facet> </a4j:status> <h:form> <a4j:commandButton status="ajaxStatus"/> </h:form>
  • 35. Exadel <a4j:param> ● Similar to <f:param> but simpler as it also assigns the value to a bean property automatically <a4j:commandButton value="Save"> <a4j:param name="#{bean.product}" value="1009"/> </a4j:commandButton> @ManagedBean public class Bean { private String product; // setter and getter }
  • 36. Exadel <a4j:log> – Ajax request information ● Levels: ◦ debug, info, warn, error
  • 37. Exadel RichFaces UI components ● Output, panels ● Input ● Menu ● Data iteration ● Tree ● Drag and drop ● Client side validation ● Miscellaneous
  • 39. Exadel All RichFaces data iteration components support partial updates
  • 40. Exadel Partial table update render="@column" render="@header" render="@row" render="@body" render="@footer" render="cellId" To render from outside the table: render="tableId@header" render="tableId@body" render="tableId@footer"
  • 41. Exadel Partial table update render="tableId:rows(bean.rowsSet)" render="tableId:rows(bean.rowsSet):cellId"
  • 42. Exadel Client-side validation based on Bean Validation (JSR 303) New in RichFaces 4
  • 43. Exadel RichFaces client validation <rich:validator> public class Bean { @Pattern(regexp="...") private String email; } <h:inputText id="email" value="#{bean.email}"> <rich:validator/> </h:inputText> <rich:message for="email"/>
  • 44. Exadel Many RichFaces components provide client-side JavaScript API <rich:popupPanel> JavaScript API Method name Description Return the top co-ordinate for the position of getTop() the pop-up panel. Return the left co-ordinate for the position of getLeft() the pop-up panel. Move the pop-up panel to the co-ordinates moveTo(top,left) specified with the top and left parameters. Resize the pop-up panel to the size specified resize(width,height) with the width and height parameters. show() Show the pop-up panel. hide() Hide the pop-up panel.
  • 45. Exadel Using #rich:component() to show/hide pop-up panel <input type="button" onclick="#{rich:component('popup')}.show();" value="Open" /> <rich:popupPanel id="popup"> <h:outputLink value="#" onclick="#{rich:component('popup')}.hide(); return false;"> <h:outputText value="Close"/> </h:outputLink> </rich:popupPanel>
  • 47. Exadel Skins ● Lightweight extension on top of CSS ● Change look and feel of all rich component with a few minor changes ● Apply to standard JSF and HTML tags
  • 48. Exadel Ready-to-use skins ● classic <context-param> <param-name>org.richfaces.skin</param-name> ● wine <param-value>ruby</param-value> </context-param> ● blueSky ● ruby ● emeraldTown ● deepMarine ● plain ● japanCherry
  • 49. Exadel Moving from RichFaces 3 to RichFaces 4...
  • 50. Exadel Things to know before upgrading
  • 51. Exadel JSF 1.x to JSF 2 ● Migrating to RichFaces 4 will automatically mean you are also upgrading to JSF 2
  • 52. Exadel Yey! No more JSP! ● JSP no longer supported ● Must use Facelets with RichFaces 4
  • 53. Exadel Seam ● Seam 2 doesn't work with JSF 2 ● Consider using Seam 3 with RichFaces 4
  • 54. Exadel RichFaces filter configuration in web.xml file is no longer required Just drop RichFaces Jars into the application There are still optional context parameters (skins, etc)
  • 56. Exadel <a4j:ajax> is 100% based on the standard <f:ajax> behavior: RichFaces 3 RichFaces 4 <a4j:support> <a4j:ajax> But, the concepts stay the same: 1)How to send an Ajax request 2)Partial view processing 3)Partial view rendering
  • 57. Exadel Important core attribute changes RichFaces 3 RichFaces 4 reRender render event=onclick event=click limitToList limitRender ajaxSingle execute=@this execute process @all, @form, @this, @none, id's, EL, @region
  • 58. Exadel RichFaces 3 RichFaces 4 <a4j:commandButton>, <a4j:commandButton>, <a4j:commandLink> <a4j:commandLink> <a4j:poll> <a4j:poll> <a4j:jsFunction> <a4j:jsFunction> <a4j:status> <a4j:status> <a4j:log> <a4j:log>
  • 59. Exadel RichFaces 3 RichFaces 4 <a4j:status> <a4j:status> <a4j:log> <a4j:log> <a4j:mediaOutput> <a4j:mediaOutput>
  • 60. Exadel Other changes: RichFaces 3 RichFaces 4 <a4j:actionParam> <a4j:param> <a4j:push> <a4j:push> Component completely redesigned <a4j:region> <a4j:region> <a4j:actionListener> Registers a listener on a N/A component and allows simple method binding
  • 61. Exadel No longer in RichFaces 4 as now part of JSF 2: ● <a4j:loadScript> ● <a4j:loadStyle> ● <a4j:keepAlive> No longer in RichFaces 4: ● <a4j:form> ● <a4j:ajaxListener>
  • 62. Exadel To redefine queue setting by individual components, a new <a4j:attachQueue> tag was introduced: <a4j:queue /> ... <a4j:commandButton> <a4j:attachQueue requestDelay="1000" requestGroupingId="ajaxGroup" /> </a4j:commmandButton> RichFaces 3 RichFaces 4 <a4j:queue> <a4j:queue> N/A <a4j:attachQueue>
  • 64. Exadel Rich inputs RichFaces 3 RichFaces 4 <rich:calendar> <rich:calendar> <rich:inplaceInput> <rich:inplaceInput> <rich:inplaceSelect> <rich:inplaceSelect> <rich:inputNumberSlider> <rich:inputNumberSlider> <rich:inputNumerSpinner> <rich:inputNumerSpinner> <rich:suggestionBox> <rich:autocomplete> <rich:comboBox> Merged with <rich:autocomplete> N/A <rich:select>
  • 65. Exadel Inputs that didn't make it... RichFaces 3 RichFaces 4 <rich:colorPicker> Not in Final, planned <rich:editor> Not in Final, planned
  • 66. Exadel Rich output/panels RichFaces 3 RichFaces 4 <rich:panel> <rich:panel> <rich:modalPanel> <rich:popupPanel> <rich:panelBar> <rich:accordion> <rich:simpleTogglePanel> <rich:collapsiblePanel> <rich:tab>, <rich:tabPanel> <rich:tab>, <rich:tabPanel> <rich:togglePanel> <rich:togglePanel> <rich:toolBar> <rich:toolbar> <rich:progressBar> <rich:progressBar> <rich:toolTip> <rich:tooltip>
  • 67. Exadel Outputs that didn't make it... RichFaces 3 RichFaces 4 <rich:paint2D> Possible with JSF 2 <rich:separator> Use <hr/> with styling Doesn't satisfy semantic <rich:spacer> markup principles
  • 68. Exadel Rich selects/ordering RichFaces 3 RichFaces 4 <rich:orderingList> Not in Final, planned <rich:listShuttle> Not in Final, planned <rich:pickList> Not in Final, planned
  • 69. Exadel Rich menu RichFaces 3 RichFaces 4 <rich:toolBar> <rich:toolBar> <rich:dropDownMenu> <rich:toolBar> <rich:panelMenu> <rich:panelMenu> <rich:contextMenu> Not in Final, planned.
  • 70. Exadel Rich data iteration RichFaces 3 RichFaces 4 <rich:dataTable> <rich:dataTable> <rich:dataGrid> <rich:dataGrid> <rich:datascroller> <rich:dataScroller> <a4j:repeat> <a4j:repeat> <rich:extendedDataTable> <rich:extendedDataTable> <rich:scrollableDataTable> <rich:dataList> <rich:dataOrderingList> <rich:list> <rich:dataDefintionList> N/A <rich:collapsibleSubTable>
  • 71. Exadel Rich data iteration didn't make it RichFaces 3 RichFaces 4 <rich:columns> Not in Final <rich:subTable> Not in Final <rich:dataFilterSlider> Not in Final
  • 72. Exadel Validation RichFaces 3 RichFaces 4 Client validation: <rich:ajaxValidator> <a4j:validator> No longer needed. Support <rich:beanValidator> via JSF 2 <rich:graphValidator> <rich:graphValidator> <rich:message> <rich:message> <rich:messages> <rich:messages>
  • 73. Exadel Rich trees Pretty much all version 3 functionality is in RichFaces 4
  • 74. Exadel Rich drag and drop Pretty much all version 3 functionality is in RichFaces 4
  • 75. Exadel Rich miscellaneous RichFaces 3 RichFaces 4 <rich:componentControl> <rich:componentControl> <rich:jQuery> <rich:jQuery> <rich:hashParam> Groups parameters into N/A hash parameter to be passed to components via JavaScript API.
  • 76. Exadel Rich miscellaneous that didn't make it RichFaces 3 RichFaces 4 <rich:effect> Not in Final <rich:gmap> Not in Final, planned <rich:virtualEarth> Not in Final, planned Available as custom <rich:insert> component. See RichFaces components showcase. <rich:hotKey> Not in Final. Use jQuery. Not in Final. Use YUI or Layout components HTML.
  • 77. Exadel A note on Not in Final Component is not in 4.0.0 but many will be added in 4.x release Get involved in RichFaces community, and let everyone know what you want!
  • 78. Exadel Skins Skins probably had the least changes
  • 79. Exadel Context parameter to set default application skin RichFaces 3 RichFaces 4 org.richfaces.SKIN org.richfaces.skin org.ajax4jsf.SKIN
  • 80. Exadel Skins in RichFaces 4 Migrated Not migrated ●blueSky ●laguna ●emeraldTown ●darkX ●ruby ●glassX ●classic ●japanCherry ●wine ●deepMarine ●NULL ●DEFAULT ●plain
  • 81. Exadel Where can I try the new RichFaces 4? http://livedemo.exadel.com/richfaces4-demo
  • 82. Exadel How can we help with RichFaces ● Web development with RichFaces Training Days ● Version 3 to 4 migration JSF 1.2, 2 1-2 ● Performance tune-up RichFaces 3, 4 1-2 JSF and RichFaces 2-3 ● Custom component RichFaces 3 to 4 1-2 development ● On-site training
  • 83. Exadel That's it for RichFaces, there is one more thing I want to show you.
  • 84. Exadel Create your first interactive prototype at http://gotiggr.com
  • 85. Exadel Tiggr (gotiggr.com) is a web application for building and sharing interactive web and mobile HTML prototypes
  • 86. Exadel max@exadel.com Thank @maxkatz you! mkblog.exadel.com gotiggr.com