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



RichFaces 4 Webinar Series

Webinar #1:
RichFaces 4 – Everything You Need To
Know

April 20, 2011

Max Katz
Charley Cowens
Exadel
Exadel



RichFaces 4 Webinar
Schedule

May 11, 2011
RichFaces 3 to RichFaces 4 – A
Class in Moving Up


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, June 2011)
Exadel




 Published
April 11, 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




Exadel 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




Exadel Services
● Professional services
● Rich enterprise application
 development
● Eclipse development
● Custom rich   component development
● Mobile   development
● Training
Exadel




The Plan Is Simple


1) Ajax features in JSF 2

2) The new RichFaces 4
Exadel




JavaServer Faces™ (JSF) is
 the standard component-
 based user interface (UI)
    framework for the
 Java EE (5 & 6) platform
   JSF 1.2     Java EE 5
   JSF 2       Java EE 6
Exadel




JSF 2
● JSF   2 is a major upgrade over JSF 1.x

● Many features, ideas taken from
 projects such as Seam, and RichFaces,
 and others
Exadel




JSF 2 new features
● Facelets             ● New   scopes
● Composite              ◦ Flash, View,
 components                custom
● Implicit             ● Configuration

 navigation             via annotations
● GET                  ● Bean Validation
        support
                        support
  ◦ h:link, h:button
                       ● Basic Ajax
● Resource   loading
Exadel




JSF 2 <f:ajax>
● Very   basic Ajax functionality
● Greatly
        inspired by RichFaces 3
 <a4j:support> tag
● Ajax in   JSF in 3 easy steps:
  1. Sending an Ajax request
  2.Partial view processing
  3.Partial view rendering
Exadel




<h:form>
   <h:input value="#{bean.word}"/>
   <h:commandButton>
      <f:ajax event="click" 1
              execute="@form" 2
              listener="#{bean.ajaxListener}"
              render="out1 out2"/> 3
   </h:commandButton>
   <h:input value="#{bean.text}" id="out1"/>
   <h:input value="#{bean.phrase}" id="out2"/>
</h:form>
Exadel




<h:form>
   <h:input value="#{bean.word}"/>
   <h:selectOneMenu value="#{bean.selected}">
      <f:selectItems value="#{bean.items}"/>
      <f:ajax event="change" 1
              execute="@form"   2
              listener="#{bean.ajaxListener}"
              render="@form"/> 3
   </h:commandButton>
   <h:input value="#{bean.text}" id="out1"/>
   <h:input value="#{bean.phrase}" id="out2"/>
</h:form>
Exadel




             Attribute   Value
Important
                         Event on which to fire the
<f:ajax>     event
                         Ajax request
attributes               @all
                         @this (default)
                         @form
             execute
                         @none
                         id's
                         EL
                         @all
                         @this
                         @form
             render
                         @none (default)
                         id's
                         EL
Exadel




 That's good, but where do
you get rich components and
            more?

A rich component framework
  is still(?) needed to build
           real-world
       Ajax applications.
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




Good, now tell me what's new
and what features you get in
       RichFaces 4?
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




Just tell me when RichFaces 4
   is going to be released?

 RichFaces was released on
      March 29, 2011
       (Yes, finally!)
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 history
2005: started by Alexander Smirnov
2005-2007: Developed by Exadel
           Ajax4jsf - open source, free
           RichFaces - commercial
2007: JBoss takes over
      Exadel team continues to develop
      the framework, project is known as
      RichFaces
Exadel




RichFaces 4


   Let's look at 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




RichFaces 4


It's important to say it again,
 RichFaces only extends and
       upgrades JSF 2...
Exadel




      RichFaces <a4j:ajax>
       ● 100% based on     standard <f:ajax>
       ● Just replace f: with a4j: and get
         exactly the same functionality
       ● But,   you get extra features...
<h:commandButton>
   <f:ajax execute="@form" render="output"/>
</h:commandButton>

<h:commandButton>
   <a4j:ajax execute="@form" render="output"/>
</h:commandButton>
Exadel



    <a4j:ajax> attributes
         Attribute                  Description

onbegin              JavaScript to execute before Ajax request
                     JavaScript to execute after response
onbeforedomupdate
                     comes back but before DOM update
oncomplete           JavaScript to execute after DOM update
                     Skips Update Model and Invoke
bypassUpdates        Application phases, useful for form
                     validation
                     Skips all <a4j:outputPanel
limitRender          ajaxRender=”true”> panels. Only
                     renders what is set in current render
status               Status to display during Ajax request
Exadel




      <a4j:commandButton/Link>
      – Ajax button/link
/* standard button with f:ajax */
<h:commandButton value="Save" action="#{bean.action}">
   <f:ajax execute="@form"
           render="output"/>
</h:commandButton>



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




<h:form>
   <h:inputText>
   <h:selectOneMenu>
                                  Need to set
   <h:commandButton>              execute=”@form”
      <f:ajax execute="@form"/>   (or execute=”id1 id2”)
   </h:commandButton>
<h:form>



<h:form>                          RichFaces default
   <h:inputText>
   <h:selectOneMenu>
                                  value for
   <a4j:commandButton/>           button/link
<h:form>                          execute=”@form”
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>
● limitRender   attribute
● render=”{bean.renderList}”
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



      Advanced rendering options:
      limitRender

<a4j:commandButton render="output"/>
<a4j:commandButton render="output" limitRender="true"/>

<h:panelGrid id="output">
                               Turns off all auto rendered panels,
...
                               only renders what is set in current
</h:panelGrid>                 render

<a4j:outputPanel ajaxRendered="true">
...
</a4j:outputPanel>
Exadel



       render=”#{bean.renderList}”
JSF                            RichFaces
1) Ajax request sent           1) Ajax request sent
2) Component id's to be        2) Component id's to
  rendered resolved              be rendered
3) Component id's are            resolved
  rendered into the page       3) Component id's
4) 2nd Ajax request is sent.     are rendered
  In this request the
  components (resolved in
  step 2 are sent with
  request) will be rendered
Exadel



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



<a4j:region> – declaratively
define execute region
<h:form>                                    Execute
 <a4j:region>                              options:
  <h:inputText />                          ● @all
  <h:inputText />
                                           ● @this
  <a4j:commandButton execute="@region"/>
                                           ● @form
 <a4j:region>
</h:form>                                  ● @none

                                           ● id's
<h:form>                                   ● EL
 <a4j:region>
                                           ● @region
   <h:inputText />
   <h:inputText />
   <a4j:commandButton />
 <a4j:region>
</h:form>
Exadel




Skipping
phases
when
validating
1.Restore View
2.Apply Request Values
3.Process Validation
4.Update Model
5.Invoke Application
6.Render Response


 <h:inputText id="name" value="#{bean.name}"/>
    <a4j:ajax event="blur" bypassUpdates="true"/>
 </h:inputText>
 <rich:message for="name"/>
Exadel




      JavaScript interactions
<h:commandLink value="Link"
   <f:ajax onevent="ajaxEvent();">
</h:commandLink>
                                  Called three times:
                                  1) begin
                                  2) success
                                  3) complete



<a4j:commandLink value="Link"
   onbegin="ajaxOnBegin()"
   onbeforedomupdate="ajaxOnBeforeDomUpdate()"
   oncomplete="ajaxOnComplete()">
</a4j:commandLink>

                           Events are separated for easier development
Exadel




JSF 2 queue
● JSF2 has very basic queue
 functionality
● Events   are queued and fired one at a
 time
● Only one request is processed on the
 server at a time
Exadel




RichFaces queue upgrades
● Combine
        requests from one or more
 components
● Delay firing   Ajax request
● Cancel DOM      updates if “similar” request
 was fired
● Define queue    as:
  ◦   Global (all views have queue)
  ◦   View-based
  ◦   Form-based
  ◦   Named (used by particular components only)
Exadel


      <a4j:queue> – “combining”
      events from the same
      component
<a4j:queue requestDelay="2000"/>
…
<a4j:commandButton value="Button A1"/>
<a4j:commandButton value="Button AB"/>



Events (clicks) from the same component
are “combined” which results in just one request
from a component being sent. Prevents sending multiple
request from the same component.
Exadel


      <a4j:queue> – “combining”
      events from different
      components

<a4j:queue requestDelay="2000"/>
...
<a4j:commandButton>
   <a4j:attachQueue requestGroupingId="ajaxGroup"/>
</a4j:commmandButton>
<a4j:commandButton>
   <a4j:attachQueue requestGroupingId="ajaxGroup"/>
</a4j:commmandButton>
Exadel




       <a4j:queue> delay
<a4j:queue requestDelay="2000"/>
...                                          Delay request
                                             by 2 seconds
<a4j:commandButton value="Button1"/>
<a4j:commandButton value="Button2"/>


<a4j:queue requestDelay="2000"/>
...                                                 Overwrite default
<a4j:commandButton>                                 delay request
                                                    by 1 second
   <a4j:attachQueue requestDelay="1000"/>
</a4j:commmandButton>
<a4j:commandButton />


Delay is a “wait” to combine similar events (events from the
same components) together.
Exadel



      <a4j:queue> – ignoring
      “stale” responses
<a4j:queue requestDelay="2000
           ingoreDupResponses="true"/>

<h:inputText value="#{bean.state}">
 <a4j:ajax event="keyup" listener="#{bean.load}"
           render="states"/>
</h:inputText>
Exadel



RichFace 4 core – more
advanced features
● <a4j:status>
● <a4j:param>
● <a4j:log>
● JavaScript   interactions
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="product" value="1009"/>
</a4j:commandButton>

public class Bean {
   private String product;
   public void setProduct (String product) {...}
   public String getProduct () {...}
}
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




rich:tab




rich:accordion




rich:progressBar
Exadel




More rich output, panels
● rich:panel
● rich:togglePanel
● rich:popupPanel
● rich:collapsiblePanel
● rich:toolTip
Exadel




rich:calendar




rich:inplaceInput


rich:inputNumberSlider


rich:autocomplete
Exadel




More rich input
● rich:inputNumberSpinner
● rich:inplaceSelect
● rich:select
● rich:fileUpload
Exadel




rich:panelMenu




rich:toolBar


rich:dropDownMenu
Exadel




rich:dataTable




rich:dataTable with
rich:collapsibleSubTable



rich:dataScroller
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




More rich data iteration
● a4j:repeat
● rich:extendedDataTable
● rich:collapsibleSubTable
● rich:list

  ◦ list | ordered | definition
● rich:dataGrid
● rich:column

  ◦ Column and row spanning
  ◦ Filtering, sorting
Exadel




rich:tree
Exadel




Drag and drop
Exadel




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

    New in RichFaces 4
Exadel




      Bean Validation (JSR 303)
       ● JSF 2 has support for Bean Validation
         (server-side)
public class Bean {
   @Pattern(regexp="...")
  private String email;
}



<h:inputText id="email" value="#{bean.email}">
   <a4j:ajax event="blur"/>
</h:inputText>
<rich:message for="email"/>
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


               RichFaces client validation
                   <rich:graphValidator>
<rich:graphValidator value="#{bean}" id="gv">
   ...
   <h:inputText value="#{bean.password1}"/>
   <h:inputText value="#{bean.password2}"/>
   <rich:message for="email" for="gv"/>
</rich:graphValidator>

@Size(min=5,max=15,message="...")
private String password1;
@Size(min=5,max=15,message="...")
private String password2;

@AssertTrue(message="Passwords don't match")
public boolean isPasswordsEquals() {
   return password1.equals(password1);
}
Exadel




         RichFaces client functions
         Function                        Description

rich:client(id)           Returns component client id
rich:element(id)          Returns DOM element
                          Returns RichFaces client component
rich:component(id)
                          instance to call JS API method
rich:isUserInRole(role)   Returns if the user has specified role
                          Returns component instance for given
rich:findComponent(id)
                          short id
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('id')>
<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




Rich miscellaneous
● <rich:componentControl>
● <rich:hashParam>
● <rich:jQuery>
Exadel




      <rich:componentControl>
       ● Allows  to call JS API on a component
         in declarative fashion
<h:outputLink id="openLink" value="#">
   <h:outputText value="Open" />
   <rich:componentControl event="click"
                          operation="show"
                          target="popup" />
</h:outputLink>

<rich:popupPanel id="popup">
...
</rich:popupPanel>
Exadel




      <rich:hashParam>
       ● Group   client side parameters into a
         hash map to be passed to component
         client API
<h:commandButton value="Show popup">
   <rich:componentControl target="pp" operation="show">
      <rich:hashParam>
         <f:param name="width" value="500" />
         <f:param name="height" value="300" />
         <f:param name="minWidth" value="300" />
         <f:param name="minHeight" value="150" />
      </rich:hashParam>
   </rich:componentControl>
</h:commandButton
Exadel




      <rich:jQuery>
<input type="button" id="changeButton"
                      value="Change title" />
<rich:jQuery selector="#changeButton"
 query="click(function(){
   $('#panel #panel_header').text('Capital of Russia');
})"/>


<rich:panel header="Moscow" id="panel">
   Moscow is the capital, the most populous ...
</rich:panel>
Exadel




Skins
Exadel




Skins
● Lightweight   extension on top of CSS
● Change
       look and feel of all rich
 component with a few minor changes
● Can
    be applied to standard JSF and
 HTML tags as well
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




      Skin file (just a property file)
#Colors
headerBackgroundColor=#900000
headerGradientColor=#DF5858
headerTextColor=#FFFFFF
headerWeightFont=bold

generalBackgroundColor=#f1f1f1
generalTextColor=#000000
generalSizeFont=11px
generalFamilyFont=Arial, Verdana, sans-serif

controlTextColor=#000000
controlBackgroundColor=#ffffff
additionalBackgroundColor=#F9E4E4
Exadel




Skins
● Modify   existing or create your own
  <context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>myCoolSkin</param-value>
  </context-param>

● Change   skins in runtime
  <context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>#{bean.skin}</param-value>
  </context-param>
Exadel




      Overwriting skins
<style>
 .rf-p-hr {
    // your custom style, applied to all panels on
    // on page
  }
 .panelHeader {
    // custom header style
  }
</style>

<rich:panel id="panel1">
...
</rich:panel id="panel2">
<rich:panel headerClass="panelHeader">
...
</rich:panel>
Exadel



       Skinning standard JSF tags
       and HTML tags
Apply to each control:
<h:button style="background-color:
               '#{richSkin.tableBackgroundColor}'"/>



Apply to all standard controls (JSF and HTML):
<context-param>
   <param-name>
      org.richfaces.enableControlSkinning
   </param-name>
   <param-value>true</param-value>
</context-param>
Exadel



      Skinning standard JSF tags
      and HTML tags
<context-param>
   <param-name>
      org.richfaces.enableControlSkinningClasses
   </param-name>
   <param-value>true</param-value>
</context-param>

<div class="rfs-ctn">
   <h:panelGrid columns="1">
                               Can be applied to
      <h:outputText />         <h:panelGrid>, <rich:panel>, <div>
      <h:inputText />          Any standard controls inside the
      <h:commandButton />      container will be skinned using
   </h:panelGrid>              standard controls skinning classes.
</div>
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




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




Powerful prototyping                Build interactive
Large number of web components,     HTML prototypes
   layout containers and jQuery   Define navigation, show pop-ups
       Mobile components.         and other event/actions to make
                                     the prototype like the real
                                            application.



      Collaborate                   View and share
Collaborate with colleagues and   the HTML prototype
  customers in real time, get     View prototypes in any browser,
           feedback.              share with anyone, get feedback.
Exadel




Try this web prototype:    Try this mobile prototype:
gotiggr.com/preview/6669   gotiggr.com/preview/5673
Exadel




        max@exadel.com

Thank   @maxkatz
 you!
        mkblog.exadel.com

        gotiggr.com

More Related Content

What's hot

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 TenDavid Chandler
 
Yii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian FackerYii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian FackerMayflower GmbH
 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGiuliano Iacobelli
 
Tutorial: extending the zend server ui and web api
Tutorial: extending the zend server ui and web apiTutorial: extending the zend server ui and web api
Tutorial: extending the zend server ui and web apiYonni Mendes
 
Rapid application development using Akeeba FOF and Joomla 3.2
Rapid application development using Akeeba FOF and Joomla 3.2Rapid application development using Akeeba FOF and Joomla 3.2
Rapid application development using Akeeba FOF and Joomla 3.2Tim Plummer
 
JSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfacesJSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfacesStrannik_2013
 
Rapid application development with FOF
Rapid application development with FOFRapid application development with FOF
Rapid application development with FOFNicholas Dionysopoulos
 
Introduction to JSF
Introduction toJSFIntroduction toJSF
Introduction to JSFSoftServe
 
XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011Tim Clark
 
10 reasons to choose the yii framework
10 reasons to choose the yii framework10 reasons to choose the yii framework
10 reasons to choose the yii frameworkjananya213
 
Desktop|Embedded Application API JSR
Desktop|Embedded Application API JSRDesktop|Embedded Application API JSR
Desktop|Embedded Application API JSRAndres Almiray
 
RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014Henry Van Styn
 
JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavatsjaxconf
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2Jim Driscoll
 
Import export.odp
Import export.odpImport export.odp
Import export.odpOro Inc.
 

What's hot (20)

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
 
Yii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian FackerYii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian Facker
 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplications
 
Fapi
FapiFapi
Fapi
 
Tutorial: extending the zend server ui and web api
Tutorial: extending the zend server ui and web apiTutorial: extending the zend server ui and web api
Tutorial: extending the zend server ui and web api
 
Rapid application development using Akeeba FOF and Joomla 3.2
Rapid application development using Akeeba FOF and Joomla 3.2Rapid application development using Akeeba FOF and Joomla 3.2
Rapid application development using Akeeba FOF and Joomla 3.2
 
JSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfacesJSF 2: Myth of panacea? Magic world of user interfaces
JSF 2: Myth of panacea? Magic world of user interfaces
 
Rapid application development with FOF
Rapid application development with FOFRapid application development with FOF
Rapid application development with FOF
 
Jsf
JsfJsf
Jsf
 
Introduction to JSF
Introduction toJSFIntroduction toJSF
Introduction to JSF
 
XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011
 
JavaEE 6 tools coverage
JavaEE 6 tools coverageJavaEE 6 tools coverage
JavaEE 6 tools coverage
 
10 reasons to choose the yii framework
10 reasons to choose the yii framework10 reasons to choose the yii framework
10 reasons to choose the yii framework
 
Desktop|Embedded Application API JSR
Desktop|Embedded Application API JSRDesktop|Embedded Application API JSR
Desktop|Embedded Application API JSR
 
RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014
 
JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavats
 
Partnering For Growth
Partnering For GrowthPartnering For Growth
Partnering For Growth
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2
 
Import export.odp
Import export.odpImport export.odp
Import export.odp
 
Why Laravel?
Why Laravel?Why Laravel?
Why Laravel?
 

Viewers also liked

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 Max Katz
 
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 Max Katz
 
Pr Krasnaya Roza#@ Optim Idea
Pr Krasnaya Roza#@ Optim IdeaPr Krasnaya Roza#@ Optim Idea
Pr Krasnaya Roza#@ Optim Idearonzin
 
Building RIA Applications with RichFaces
Building RIA Applications with RichFacesBuilding RIA Applications with RichFaces
Building RIA Applications with RichFacesMax Katz
 
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 2010Max Katz
 
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 2Max Katz
 

Viewers also liked (8)

Presentazione Acqua
Presentazione AcquaPresentazione Acqua
Presentazione Acqua
 
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
 
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
 
Presentation
PresentationPresentation
Presentation
 
Pr Krasnaya Roza#@ Optim Idea
Pr Krasnaya Roza#@ Optim IdeaPr Krasnaya Roza#@ Optim Idea
Pr Krasnaya Roza#@ Optim Idea
 
Building RIA Applications with RichFaces
Building RIA Applications with RichFacesBuilding RIA Applications with RichFaces
Building RIA Applications with RichFaces
 
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
 
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
 

Similar to RichFaces 4 webinar #1: Everything You Need To Know

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 - HerbstcampusMax Katz
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemAlexander Casall
 
RichFaces: rich:* component library
RichFaces: rich:* component libraryRichFaces: rich:* component library
RichFaces: rich:* component libraryMax 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 SeamLincoln III
 
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 ReactPiotr Nalepa
 
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 4balunasj
 
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
 
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 ReacteZ Systems
 
Introduction to RichFaces
Introduction to RichFacesIntroduction to RichFaces
Introduction to RichFacesMax Katz
 
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/JSFSummitbalunasj
 
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.0Arun Gupta
 
React Basic and Advance || React Basic
React Basic and Advance   || React BasicReact Basic and Advance   || React Basic
React Basic and Advance || React Basicrafaqathussainc077
 
vJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemvJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemAndres Almiray
 
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 Skills Matter
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConLudovic Champenois
 
Javascript Bundling and modularization
Javascript Bundling and modularizationJavascript Bundling and modularization
Javascript Bundling and modularizationstbaechler
 

Similar to RichFaces 4 webinar #1: Everything You Need To Know (20)

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
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and Ecosystem
 
RichFaces: rich:* component library
RichFaces: rich:* component libraryRichFaces: rich:* component library
RichFaces: rich:* component library
 
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
 
JSF2
JSF2JSF2
JSF2
 
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
 
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
 
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 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
 
The JavaFX Ecosystem
The JavaFX EcosystemThe JavaFX Ecosystem
The JavaFX Ecosystem
 
The JavaFX Ecosystem
The JavaFX EcosystemThe JavaFX Ecosystem
The JavaFX Ecosystem
 
Introduction to RichFaces
Introduction to RichFacesIntroduction to RichFaces
Introduction to RichFaces
 
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
 
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
 
React Basic and Advance || React Basic
React Basic and Advance   || React BasicReact Basic and Advance   || React Basic
React Basic and Advance || React Basic
 
vJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemvJUG - The JavaFX Ecosystem
vJUG - The JavaFX Ecosystem
 
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
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
 
JSF 2.0 Preview
JSF 2.0 PreviewJSF 2.0 Preview
JSF 2.0 Preview
 
Javascript Bundling and modularization
Javascript Bundling and modularizationJavascript Bundling and modularization
Javascript Bundling and modularization
 

More from Max Katz

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 DevelopmentMax Katz
 
Tiggzi at DC jQuery Meetup
Tiggzi at DC jQuery MeetupTiggzi at DC jQuery Meetup
Tiggzi at DC jQuery MeetupMax Katz
 
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 ServicesMax Katz
 
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 MeetupMax Katz
 
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 AppsMax Katz
 
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 2011Max Katz
 
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 AppsMax Katz
 
RichFaces skins
RichFaces skinsRichFaces skins
RichFaces skinsMax Katz
 
RichFaces: more concepts and features
RichFaces: more concepts and featuresRichFaces: more concepts and features
RichFaces: more concepts and featuresMax Katz
 
Rich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXRich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXMax Katz
 
Building RIA Applications with JavaFX
Building RIA Applications with JavaFXBuilding RIA Applications with JavaFX
Building RIA Applications with JavaFXMax Katz
 

More from Max Katz (11)

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

Recently uploaded

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 

Recently uploaded (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 

RichFaces 4 webinar #1: Everything You Need To Know

  • 1. Exadel RichFaces 4 Webinar Series Webinar #1: RichFaces 4 – Everything You Need To Know April 20, 2011 Max Katz Charley Cowens Exadel
  • 2. Exadel RichFaces 4 Webinar Schedule May 11, 2011 RichFaces 3 to RichFaces 4 – A Class in Moving Up 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, June 2011)
  • 6. Exadel Exadel is a global software engineering company. ● Founded in 1998, headquarters in San Francisco Bay Area ● 7 development offices in Europe ● 350+ employees
  • 7. Exadel Exadel 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
  • 8. Exadel Exadel Services ● Professional services ● Rich enterprise application development ● Eclipse development ● Custom rich component development ● Mobile development ● Training
  • 9. Exadel The Plan Is Simple 1) Ajax features in JSF 2 2) The new RichFaces 4
  • 10. Exadel JavaServer Faces™ (JSF) is the standard component- based user interface (UI) framework for the Java EE (5 & 6) platform JSF 1.2 Java EE 5 JSF 2 Java EE 6
  • 11. Exadel JSF 2 ● JSF 2 is a major upgrade over JSF 1.x ● Many features, ideas taken from projects such as Seam, and RichFaces, and others
  • 12. Exadel JSF 2 new features ● Facelets ● New scopes ● Composite ◦ Flash, View, components custom ● Implicit ● Configuration navigation via annotations ● GET ● Bean Validation support support ◦ h:link, h:button ● Basic Ajax ● Resource loading
  • 13. Exadel JSF 2 <f:ajax> ● Very basic Ajax functionality ● Greatly inspired by RichFaces 3 <a4j:support> tag ● Ajax in JSF in 3 easy steps: 1. Sending an Ajax request 2.Partial view processing 3.Partial view rendering
  • 14. Exadel <h:form> <h:input value="#{bean.word}"/> <h:commandButton> <f:ajax event="click" 1 execute="@form" 2 listener="#{bean.ajaxListener}" render="out1 out2"/> 3 </h:commandButton> <h:input value="#{bean.text}" id="out1"/> <h:input value="#{bean.phrase}" id="out2"/> </h:form>
  • 15. Exadel <h:form> <h:input value="#{bean.word}"/> <h:selectOneMenu value="#{bean.selected}"> <f:selectItems value="#{bean.items}"/> <f:ajax event="change" 1 execute="@form" 2 listener="#{bean.ajaxListener}" render="@form"/> 3 </h:commandButton> <h:input value="#{bean.text}" id="out1"/> <h:input value="#{bean.phrase}" id="out2"/> </h:form>
  • 16. Exadel Attribute Value Important Event on which to fire the <f:ajax> event Ajax request attributes @all @this (default) @form execute @none id's EL @all @this @form render @none (default) id's EL
  • 17. Exadel That's good, but where do you get rich components and more? A rich component framework is still(?) needed to build real-world Ajax applications.
  • 18. Exadel RichFaces 4 is a lightweight, open source framework for JSF 2
  • 19. 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
  • 20. Exadel Good, now tell me what's new and what features you get in RichFaces 4?
  • 21. Exadel RichFaces 4 100% built on top of JSF2, just extends functionality in JSF 2
  • 22. Exadel RichFaces 4 JavaScript is now entirely based on the popular jQuery library
  • 23. 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
  • 24. Exadel RichFaces 4 Zero-configuration. Just drop RichFaces into the application.
  • 25. Exadel RichFaces 4 New client-side validation based on Bean Validation (JSR 303)
  • 26. Exadel RichFaces 4 New, and easy to use CDK (Component Development Kit), allows quickly to build your own custom rich components
  • 27. 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)
  • 28. Exadel RichFaces 4 Run on: Google App Engine (GAE), Amazon EC2, CloudBees
  • 29. Exadel RichFaces 4 JSF implementations: Mojarra or Myfaces
  • 30. Exadel RichFaces 4 Any browser
  • 31. Exadel RichFaces 4 Tooling support through JBoss Tools, IntelliJ, NetBeans
  • 32. Exadel Just tell me when RichFaces 4 is going to be released? RichFaces was released on March 29, 2011 (Yes, finally!)
  • 33. 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
  • 34. Exadel RichFaces history 2005: started by Alexander Smirnov 2005-2007: Developed by Exadel Ajax4jsf - open source, free RichFaces - commercial 2007: JBoss takes over Exadel team continues to develop the framework, project is known as RichFaces
  • 35. Exadel RichFaces 4 Let's look at RichFaces features in more detail...
  • 36. Exadel RichFaces 4 core – sending an Ajax request ● a4j:ajax ● a4j:commandButton ● a4j:commandLink ● a4j:jsFunction ● a4j:poll ● a4j:push
  • 37. Exadel RichFaces 4 It's important to say it again, RichFaces only extends and upgrades JSF 2...
  • 38. Exadel RichFaces <a4j:ajax> ● 100% based on standard <f:ajax> ● Just replace f: with a4j: and get exactly the same functionality ● But, you get extra features... <h:commandButton> <f:ajax execute="@form" render="output"/> </h:commandButton> <h:commandButton> <a4j:ajax execute="@form" render="output"/> </h:commandButton>
  • 39. Exadel <a4j:ajax> attributes Attribute Description onbegin JavaScript to execute before Ajax request JavaScript to execute after response onbeforedomupdate comes back but before DOM update oncomplete JavaScript to execute after DOM update Skips Update Model and Invoke bypassUpdates Application phases, useful for form validation Skips all <a4j:outputPanel limitRender ajaxRender=”true”> panels. Only renders what is set in current render status Status to display during Ajax request
  • 40. Exadel <a4j:commandButton/Link> – Ajax button/link /* standard button with f:ajax */ <h:commandButton value="Save" action="#{bean.action}"> <f:ajax execute="@form" render="output"/> </h:commandButton> /* RichFaces button */ <a4j:commandButton value="Save" render="output" action="#{bean.action}" />
  • 41. Exadel <h:form> <h:inputText> <h:selectOneMenu> Need to set <h:commandButton> execute=”@form” <f:ajax execute="@form"/> (or execute=”id1 id2”) </h:commandButton> <h:form> <h:form> RichFaces default <h:inputText> <h:selectOneMenu> value for <a4j:commandButton/> button/link <h:form> execute=”@form”
  • 42. 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>
  • 43. 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>
  • 44. 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)" />
  • 45. Exadel RichFace 4 core – advanced rendering features ● <a4j:outputPanel> ● limitRender attribute ● render=”{bean.renderList}”
  • 46. 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
  • 47. Exadel Advanced rendering options: limitRender <a4j:commandButton render="output"/> <a4j:commandButton render="output" limitRender="true"/> <h:panelGrid id="output"> Turns off all auto rendered panels, ... only renders what is set in current </h:panelGrid> render <a4j:outputPanel ajaxRendered="true"> ... </a4j:outputPanel>
  • 48. Exadel render=”#{bean.renderList}” JSF RichFaces 1) Ajax request sent 1) Ajax request sent 2) Component id's to be 2) Component id's to rendered resolved be rendered 3) Component id's are resolved rendered into the page 3) Component id's 4) 2nd Ajax request is sent. are rendered In this request the components (resolved in step 2 are sent with request) will be rendered
  • 49. Exadel RichFace 4 core – advanced execute features ● <a4j:region> ● bypassUpdates attribute
  • 50. Exadel <a4j:region> – declaratively define execute region <h:form> Execute <a4j:region> options: <h:inputText /> ● @all <h:inputText /> ● @this <a4j:commandButton execute="@region"/> ● @form <a4j:region> </h:form> ● @none ● id's <h:form> ● EL <a4j:region> ● @region <h:inputText /> <h:inputText /> <a4j:commandButton /> <a4j:region> </h:form>
  • 51. Exadel Skipping phases when validating 1.Restore View 2.Apply Request Values 3.Process Validation 4.Update Model 5.Invoke Application 6.Render Response <h:inputText id="name" value="#{bean.name}"/> <a4j:ajax event="blur" bypassUpdates="true"/> </h:inputText> <rich:message for="name"/>
  • 52. Exadel JavaScript interactions <h:commandLink value="Link" <f:ajax onevent="ajaxEvent();"> </h:commandLink> Called three times: 1) begin 2) success 3) complete <a4j:commandLink value="Link" onbegin="ajaxOnBegin()" onbeforedomupdate="ajaxOnBeforeDomUpdate()" oncomplete="ajaxOnComplete()"> </a4j:commandLink> Events are separated for easier development
  • 53. Exadel JSF 2 queue ● JSF2 has very basic queue functionality ● Events are queued and fired one at a time ● Only one request is processed on the server at a time
  • 54. Exadel RichFaces queue upgrades ● Combine requests from one or more components ● Delay firing Ajax request ● Cancel DOM updates if “similar” request was fired ● Define queue as: ◦ Global (all views have queue) ◦ View-based ◦ Form-based ◦ Named (used by particular components only)
  • 55. Exadel <a4j:queue> – “combining” events from the same component <a4j:queue requestDelay="2000"/> … <a4j:commandButton value="Button A1"/> <a4j:commandButton value="Button AB"/> Events (clicks) from the same component are “combined” which results in just one request from a component being sent. Prevents sending multiple request from the same component.
  • 56. Exadel <a4j:queue> – “combining” events from different components <a4j:queue requestDelay="2000"/> ... <a4j:commandButton> <a4j:attachQueue requestGroupingId="ajaxGroup"/> </a4j:commmandButton> <a4j:commandButton> <a4j:attachQueue requestGroupingId="ajaxGroup"/> </a4j:commmandButton>
  • 57. Exadel <a4j:queue> delay <a4j:queue requestDelay="2000"/> ... Delay request by 2 seconds <a4j:commandButton value="Button1"/> <a4j:commandButton value="Button2"/> <a4j:queue requestDelay="2000"/> ... Overwrite default <a4j:commandButton> delay request by 1 second <a4j:attachQueue requestDelay="1000"/> </a4j:commmandButton> <a4j:commandButton /> Delay is a “wait” to combine similar events (events from the same components) together.
  • 58. Exadel <a4j:queue> – ignoring “stale” responses <a4j:queue requestDelay="2000 ingoreDupResponses="true"/> <h:inputText value="#{bean.state}"> <a4j:ajax event="keyup" listener="#{bean.load}" render="states"/> </h:inputText>
  • 59. Exadel RichFace 4 core – more advanced features ● <a4j:status> ● <a4j:param> ● <a4j:log> ● JavaScript interactions
  • 60. 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>
  • 61. 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="product" value="1009"/> </a4j:commandButton> public class Bean { private String product; public void setProduct (String product) {...} public String getProduct () {...} }
  • 62. Exadel <a4j:log> – Ajax request information ● Levels: ◦ debug, info, warn, error
  • 63. Exadel RichFaces UI components ● Output, panels ● Input ● Menu ● Data iteration ● Tree ● Drag and drop ● Client side validation ● Miscellaneous
  • 65. Exadel More rich output, panels ● rich:panel ● rich:togglePanel ● rich:popupPanel ● rich:collapsiblePanel ● rich:toolTip
  • 67. Exadel More rich input ● rich:inputNumberSpinner ● rich:inplaceSelect ● rich:select ● rich:fileUpload
  • 70. 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"
  • 71. Exadel Partial table update render="tableId:rows(bean.rowsSet)" render="tableId:rows(bean.rowsSet):cellId"
  • 72. Exadel More rich data iteration ● a4j:repeat ● rich:extendedDataTable ● rich:collapsibleSubTable ● rich:list ◦ list | ordered | definition ● rich:dataGrid ● rich:column ◦ Column and row spanning ◦ Filtering, sorting
  • 75. Exadel Client-side validation based on Bean Validation (JSR 303) New in RichFaces 4
  • 76. Exadel Bean Validation (JSR 303) ● JSF 2 has support for Bean Validation (server-side) public class Bean { @Pattern(regexp="...") private String email; } <h:inputText id="email" value="#{bean.email}"> <a4j:ajax event="blur"/> </h:inputText> <rich:message for="email"/>
  • 77. 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"/>
  • 78. Exadel RichFaces client validation <rich:graphValidator> <rich:graphValidator value="#{bean}" id="gv"> ... <h:inputText value="#{bean.password1}"/> <h:inputText value="#{bean.password2}"/> <rich:message for="email" for="gv"/> </rich:graphValidator> @Size(min=5,max=15,message="...") private String password1; @Size(min=5,max=15,message="...") private String password2; @AssertTrue(message="Passwords don't match") public boolean isPasswordsEquals() { return password1.equals(password1); }
  • 79. Exadel RichFaces client functions Function Description rich:client(id) Returns component client id rich:element(id) Returns DOM element Returns RichFaces client component rich:component(id) instance to call JS API method rich:isUserInRole(role) Returns if the user has specified role Returns component instance for given rich:findComponent(id) short id
  • 80. 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.
  • 81. Exadel Using <rich:component('id')> <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>
  • 82. Exadel Rich miscellaneous ● <rich:componentControl> ● <rich:hashParam> ● <rich:jQuery>
  • 83. Exadel <rich:componentControl> ● Allows to call JS API on a component in declarative fashion <h:outputLink id="openLink" value="#"> <h:outputText value="Open" /> <rich:componentControl event="click" operation="show" target="popup" /> </h:outputLink> <rich:popupPanel id="popup"> ... </rich:popupPanel>
  • 84. Exadel <rich:hashParam> ● Group client side parameters into a hash map to be passed to component client API <h:commandButton value="Show popup"> <rich:componentControl target="pp" operation="show"> <rich:hashParam> <f:param name="width" value="500" /> <f:param name="height" value="300" /> <f:param name="minWidth" value="300" /> <f:param name="minHeight" value="150" /> </rich:hashParam> </rich:componentControl> </h:commandButton
  • 85. Exadel <rich:jQuery> <input type="button" id="changeButton" value="Change title" /> <rich:jQuery selector="#changeButton" query="click(function(){ $('#panel #panel_header').text('Capital of Russia'); })"/> <rich:panel header="Moscow" id="panel"> Moscow is the capital, the most populous ... </rich:panel>
  • 87. Exadel Skins ● Lightweight extension on top of CSS ● Change look and feel of all rich component with a few minor changes ● Can be applied to standard JSF and HTML tags as well
  • 88. 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
  • 89. Exadel Skin file (just a property file) #Colors headerBackgroundColor=#900000 headerGradientColor=#DF5858 headerTextColor=#FFFFFF headerWeightFont=bold generalBackgroundColor=#f1f1f1 generalTextColor=#000000 generalSizeFont=11px generalFamilyFont=Arial, Verdana, sans-serif controlTextColor=#000000 controlBackgroundColor=#ffffff additionalBackgroundColor=#F9E4E4
  • 90. Exadel Skins ● Modify existing or create your own <context-param> <param-name>org.richfaces.skin</param-name> <param-value>myCoolSkin</param-value> </context-param> ● Change skins in runtime <context-param> <param-name>org.richfaces.skin</param-name> <param-value>#{bean.skin}</param-value> </context-param>
  • 91. Exadel Overwriting skins <style> .rf-p-hr { // your custom style, applied to all panels on // on page } .panelHeader { // custom header style } </style> <rich:panel id="panel1"> ... </rich:panel id="panel2"> <rich:panel headerClass="panelHeader"> ... </rich:panel>
  • 92. Exadel Skinning standard JSF tags and HTML tags Apply to each control: <h:button style="background-color: '#{richSkin.tableBackgroundColor}'"/> Apply to all standard controls (JSF and HTML): <context-param> <param-name> org.richfaces.enableControlSkinning </param-name> <param-value>true</param-value> </context-param>
  • 93. Exadel Skinning standard JSF tags and HTML tags <context-param> <param-name> org.richfaces.enableControlSkinningClasses </param-name> <param-value>true</param-value> </context-param> <div class="rfs-ctn"> <h:panelGrid columns="1"> Can be applied to <h:outputText /> <h:panelGrid>, <rich:panel>, <div> <h:inputText /> Any standard controls inside the <h:commandButton /> container will be skinned using </h:panelGrid> standard controls skinning classes. </div>
  • 94. Exadel Where can I try the new RichFaces 4? http://livedemo.exadel.com/richfaces4-demo
  • 95. 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
  • 96. Exadel That's it for RichFaces, there is one more thing I want to show you.
  • 97. Exadel Tiggr (gotiggr.com) is a web application for building and sharing interactive web and mobile HTML prototypes
  • 98. Exadel Powerful prototyping Build interactive Large number of web components, HTML prototypes layout containers and jQuery Define navigation, show pop-ups Mobile components. and other event/actions to make the prototype like the real application. Collaborate View and share Collaborate with colleagues and the HTML prototype customers in real time, get View prototypes in any browser, feedback. share with anyone, get feedback.
  • 99. Exadel Try this web prototype: Try this mobile prototype: gotiggr.com/preview/6669 gotiggr.com/preview/5673
  • 100. Exadel max@exadel.com Thank @maxkatz you! mkblog.exadel.com gotiggr.com