SlideShare a Scribd company logo
<Insert Picture Here>




Java Server Faces 2.0
Arun Gupta, Java EE & GlassFish Guy
blogs.sun.com/arungupta, @arungupta
The following/preceding is intended to outline our
general product direction. It is intended for
information purposes only, and may not be
incorporated into any contract. It is not a
commitment to deliver any material, code, or
functionality, and should not be relied upon in
making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.



                                                     2
Features, features, features, ...




                                    3
Facelets




           4
Facelets
• Designed for JSF from beginning
• XHTML + CSS
   • Document validation
• Better error handling, including line numbers
• Library prefixes as namespaces
• EL directly in page:
   • #{bean.propertyname}
• Templating made easy
   • ui:composition, ui:define, ui:insert
   • ui:include, ui:repeat

                                              5
Facelets – Sample Code
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html">
  <h:head>
    <title>Enter Name &amp; Password</title>
  </h:head>
  <h:body>
    <h1>Enter Name &amp; Password</h1>
    <h:form>
      <h:panelGrid columns="2">
        <h:outputText value="Name:"/>
        <h:inputText value="#{simplebean.name}" title="name"
                     id="name" required="true"/>
        <h:outputText value="Password:"/>
        <h:inputText value="#{simplebean.password}" title="password"
                     id="password" required="true"/>
      </h:panelGrid>
      <h:commandButton action="show" value="submit"/>
    </h:form>
  </h:body>
</html>


                                                                       6
Composite Components




                       7
This...




          8
Becomes this...




                  9
Or maybe this:




                 10
Composite Components
• Enable True Abstraction
 • Create a true, reusable, component from an
   arbitrary region of a page
 • Built by composing other components
• “Using” and “Defining” page
• Full support for using attached objects in
 the using page
 • Action methods
 • Validators, etc


                                                11
Composite Components – Sample Code




                                     12
Composite Component – Sample Code
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html">
  <h:head>
    <title>Enter Name &amp; Password</title>
  </h:head>
  <h:body>
    <h1>Enter Name &amp; Password</h1>
    <h:form>
      <h:panelGrid columns="2">
        <h:outputText value="Name:"/>
        <h:inputText value="#{simplebean.name}" title="name"
                     id="name" required="true"/>
        <h:outputText value="Password:"/>
        <h:inputText value="#{simplebean.password}" title="password"
                     id="password" required="true"/>
      </h:panelGrid>
      <h:commandButton action="show" value="submit"/>
    </h:form>
  </h:body>
</html>

                                                                 13
Composite Components - Mapping
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ez="http://java.sun.com/jsf/composite/ezcomp">
  <h:head>
    <title>Enter Name &amp; Password</title>
  </h:head>
  <h:body>
    <h1>Enter Name &amp; Password</h1>
    <h:form>
      <ez:username-password/>
      <h:commandButton action="show" value="submit"/>
    </h:form>
                                     . . .
  </h:body>
                                     WEB-INF
</html>
                                     index.xhtml
                                     resources/
                                       ezcomp/
                                         username-password.xhtml

 http://blogs.sun.com/arungupta/entry/totd_147_java_server_faces

                                                                   14
Integrated Ajax




                  15
Integrated Ajax
• Inspiration – ADF, RichFaces, IceFaces,
  DynamicFaces
• Two entry points:
 • Declarative: <f:ajax> tag, uses
   AjaxBehavior
 • Programmatic ajax
   • resource library javax.faces
   • resource name jsf.js
   • JavaScript namespace jsf.ajax.
      • jsf.ajax.request function

                                            16
Integrated Ajax – Sample Code




<h:commandButton
      actionListener="#{sakilabean.findActors}"
      value="submit">
      <f:ajax execute="length"
          render="actorTable totalActors"/>
</h:commandButton>



http://blogs.sun.com/arungupta/entry/totd_123_f_ajax_bean


                                                            17
Partial State Saving




                       18
Partial State Saving

• Inspired by Trinidad state saving
• Save only the state that's changed since
  creation of the component tree
• Per-view state size up to 4X smaller
• Default for pages written with Facelets
• All standard components implement this
  feature
 • Default for composite components



                                             19
View Parameters




                  20
View Parameters
• Inspired by Page Parameters from Seam
• Provides a declarative way to map request
 parameters to EL-reachable location
  • <f:viewParam>, <f:metadata>
<f:metadata>
  <f:viewParam name="foo"
value="#{bean.foo}"/>
</f:metadata>

page1.xhtml?foo=bar

bean.foo will equal “bar”

                                              21
System Events




                22
System Events

• Inspired by Solaris Dtrace, Linux strace,
  etc.
• Publish/Subscribe event bus for things
  that happen during the JSF Lifecycle
• Adds to event listening abilities
 • FacesEvent/FacesListener
 • PhaseEvent/PhaseListener
 • SystemEvent/SystemEventListener



                                              23
System Event Types




                     24
System Events – Sample Code

<h:inputText>
    <f:event type="preValidate"
           listener="#{bean.doSomePreValidation}"/>
</h:inputText>



<h:inputText value="#{myBean.text}">
    <f:event type="beforeRender"
         listener="#{myBean.beforeTextRender}"/>
</h:inputText>




                                                      25
Resources




            26
Resources
• Standard way to serve image, JavaScripts,
  CSS, …
 • No need for separate Servlet or Filter
 • Logically related to components, treat them that
   way
• @ResourceDependency or
  @ResourceDependencies on custom
  components
• Built in support for CSS, Image, JavaScript
  resources
• /resources or /META-INF/resources
                                                      27
Resource EL – Sample Code

• #{resource['<resource>']}
• #{resource['<library>:<resource>'
  ]}
• Examples of use
 • <a href="#{resource['header.jpg']}" />
 • <h:graphicImage
   value="#{resource['corp:header.jpg']}"
   />




                                       28
Behaviors




            29
Behaviors
• A Behavior is an interface and invents a
  new type of “attached object” which takes
  part in decode/encode of a component
• 3 new behaviors – ClientBehavior,
  ClientBehaviorHolder,
  AjaxBehavior
<h:commandLink
    onclick="return confirm('Really???')"/>

<h:commandLink>
    <foo:confirm message="Really???"/>
</h:commandLink>

                                              30
Optional “faces-config.xml”

• <managed-bean> → @ManagedBean or
 @Named
 • Validator, Renderer, Listener, ...
• Default navigation rules – match a view on
 the disk
 • Conditional navigation
 @Named(“simplebean”)
 public class SimpleBean {
 . . .
 }
 <h:commandButton action="show" value="submit"/>

                                                   31
Lot more features ...

• Annotations
• Navigation
• Exceptions
• Validation
• EL
• Scopes
• Project Stage



                         32
Annotations

• @ManagedBean
• @*Scoped (Session, Request, etc)
• @ManagedProperty
• @FacesComponent
• @FacesConverter
• etc.
• With implicit Navigation, may eliminate
 need for faces-config.xml in many cases

                                            33
Bookmarkable URLs

<h:link outcome="viewEntry" value="Link">

  <f:param name="entry" value="#{aBean.entry}"/>

</h:link>



<a href="http://localhost:8080/myapp/viewEntry.xhtml?
entry=entry1">Link</a>




                                                   34
EL (Expression Langauge)


• #{component}, #{cc} (composite
  component): get the “currently” processed
  component / composite component
• #{component.clientId}
• #{component.messageList}




                                              35
Validation

• Integration with JSR 303: Bean
  Validation
   • @NotEmpty String name;
   • default validator: javax.faces.Bean –
     automatically applied to all input fields
• Default-validator: hook up a validator for
  all instances of EditableValueHolder
• <f:validateBean>,
  <f:validateRequired>,
  <f:validateRegexp>
                                                 36
Project Stage

• Inspired by Rails
• Development
   • Better error reporting, debugging
• Production
   • Better performance




                                         37
JSF 2.2
 http://jcp.org/en/jsr/detail?id=344
                                       NEW

• Ease of development
  • cc:interface is optional
  • JSF lifecycle is CDI aware
  • Runtime configuration options change
• Support implementation of Portlet Bridge 2.0
• Support for HTML5 features
  • Forms, Heading/Section content model, ...
• New components like FileUpload and
 BackButton

                                             38
References


• glassfish.org
• oracle.com/goto/glassfish
• blogs.sun.com/theaquarium
• glassfish.org/roadmap
• youtube.com/user/GlassFishVideos
• Follow @glassfish




                                     39
<Insert Picture Here>




Java Server Faces 2.0
Arun Gupta, Java EE & GlassFish Guy
blogs.sun.com/arungupta, @arungupta

More Related Content

What's hot (20)

PDF
Primefaces Nextgen Lju
Skills Matter
 
PDF
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
balunasj
 
PPTX
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Atlassian
 
PDF
Lecture 2: Servlets
Fahad Golra
 
PPTX
Go Fullstack: JSF for Public Sites (CONFESS 2012)
Michael Kurz
 
PDF
PrimeTime JSF with PrimeFaces - Dec 2014
cagataycivici
 
PDF
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...
David Glick
 
PDF
Java Web Programming [5/9] : EL, JSTL and Custom Tags
IMC Institute
 
PDF
Rich Portlet Development in uPortal
Jennifer Bourey
 
PDF
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
Skills Matter
 
PPTX
Go Fullstack: JSF for Public Sites (CONFESS 2013)
Michael Kurz
 
PDF
Java Web Programming [8/9] : JSF and AJAX
IMC Institute
 
PDF
HTML5 and CSS3 refresher
Ivano Malavolta
 
PPTX
Understanding JSP -Servlets
Gagandeep Singh
 
PDF
Expression Language in JSP
corneliuskoo
 
PDF
Spring Mvc Rest
Craig Walls
 
PDF
Primefaces Confess 2012
cagataycivici
 
PPTX
Rest with Java EE 6 , Security , Backbone.js
Carol McDonald
 
PPTX
Mule esb
Khan625
 
PDF
Jsf2 html5-jazoon
Roger Kitain
 
Primefaces Nextgen Lju
Skills Matter
 
A Peek At The Future: Going Beyond JavaServer Faces 2.0 With RichFaces 4
balunasj
 
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Atlassian
 
Lecture 2: Servlets
Fahad Golra
 
Go Fullstack: JSF for Public Sites (CONFESS 2012)
Michael Kurz
 
PrimeTime JSF with PrimeFaces - Dec 2014
cagataycivici
 
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...
David Glick
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
IMC Institute
 
Rich Portlet Development in uPortal
Jennifer Bourey
 
In The Brain of Cagatay Civici: Exploring JavaServer Faces 2.0 and PrimeFaces
Skills Matter
 
Go Fullstack: JSF for Public Sites (CONFESS 2013)
Michael Kurz
 
Java Web Programming [8/9] : JSF and AJAX
IMC Institute
 
HTML5 and CSS3 refresher
Ivano Malavolta
 
Understanding JSP -Servlets
Gagandeep Singh
 
Expression Language in JSP
corneliuskoo
 
Spring Mvc Rest
Craig Walls
 
Primefaces Confess 2012
cagataycivici
 
Rest with Java EE 6 , Security , Backbone.js
Carol McDonald
 
Mule esb
Khan625
 
Jsf2 html5-jazoon
Roger Kitain
 

Viewers also liked (7)

ODP
Java EE 6 & GlassFish v3: Paving path for the future
Arun Gupta
 
PDF
Javaee6 eclipseday-googleplex-2010
Arun Gupta
 
PDF
Running your Java EE 6 applications in the clouds
Arun Gupta
 
PDF
Java EE 6 and GlassFish v3: Paving the path for future
Arun Gupta
 
PDF
JFokus 2011 - Running your Java EE 6 apps in the Cloud
Arun Gupta
 
PDF
50 features of Java EE 7 in 50 minutes at JavaZone 2014
Arun Gupta
 
PDF
Using the latest Java Persistence API 2 Features - Tech Days 2010 India
Arun Gupta
 
Java EE 6 & GlassFish v3: Paving path for the future
Arun Gupta
 
Javaee6 eclipseday-googleplex-2010
Arun Gupta
 
Running your Java EE 6 applications in the clouds
Arun Gupta
 
Java EE 6 and GlassFish v3: Paving the path for future
Arun Gupta
 
JFokus 2011 - Running your Java EE 6 apps in the Cloud
Arun Gupta
 
50 features of Java EE 7 in 50 minutes at JavaZone 2014
Arun Gupta
 
Using the latest Java Persistence API 2 Features - Tech Days 2010 India
Arun Gupta
 
Ad

Similar to Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0 (20)

PPTX
JSF2
Alex Tumanoff
 
KEY
LatJUG. JSF2.0 - The JavaEE6 Standard
denis Udod
 
ODP
JSF 2.0 (JavaEE Webinar)
Roger Kitain
 
PDF
Going Above JSF 2.0 with RichFaces and Seam
Lincoln III
 
PPTX
Jsf presentation
Ashish Gupta
 
PDF
Jsf2 composite-components
vinaysbk
 
PDF
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Raghavan Mohan
 
PDF
What You Need To Build Cool Enterprise Applications With JSF
Max Katz
 
PPT
JSF 2 and beyond: Keeping progress coming
Andy Schwartz
 
PDF
Sun JSF Presentation
Gaurav Dighe
 
ODP
A Complete Tour of JSF 2
Jim Driscoll
 
PPTX
Introduction to jsf 2
yousry ibrahim
 
ODP
Development of web apps based on JSF (TU Vienna)
blahap
 
PDF
Jsf2 overview
sohan1234
 
PDF
jsf2-composite-components
Edward Burns
 
PPT
JSF basics
airbo
 
PDF
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
jaxconf
 
PDF
JBoss Seam vs JSF
Markos Fragkakis
 
PPTX
Jsf
Esraa Yaseen
 
LatJUG. JSF2.0 - The JavaEE6 Standard
denis Udod
 
JSF 2.0 (JavaEE Webinar)
Roger Kitain
 
Going Above JSF 2.0 with RichFaces and Seam
Lincoln III
 
Jsf presentation
Ashish Gupta
 
Jsf2 composite-components
vinaysbk
 
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Raghavan Mohan
 
What You Need To Build Cool Enterprise Applications With JSF
Max Katz
 
JSF 2 and beyond: Keeping progress coming
Andy Schwartz
 
Sun JSF Presentation
Gaurav Dighe
 
A Complete Tour of JSF 2
Jim Driscoll
 
Introduction to jsf 2
yousry ibrahim
 
Development of web apps based on JSF (TU Vienna)
blahap
 
Jsf2 overview
sohan1234
 
jsf2-composite-components
Edward Burns
 
JSF basics
airbo
 
PrimeFaces: Next-Generation JSF Component Suite - Ian Hlavats
jaxconf
 
JBoss Seam vs JSF
Markos Fragkakis
 
Ad

More from Arun Gupta (20)

PDF
5 Skills To Force Multiply Technical Talents.pdf
Arun Gupta
 
PPTX
Machine Learning using Kubernetes - AI Conclave 2019
Arun Gupta
 
PDF
Machine Learning using Kubeflow and Kubernetes
Arun Gupta
 
PPTX
Secure and Fast microVM for Serverless Computing using Firecracker
Arun Gupta
 
PPTX
Building Java in the Open - j.Day at OSCON 2019
Arun Gupta
 
PPTX
Why Amazon Cares about Open Source
Arun Gupta
 
PDF
Machine learning using Kubernetes
Arun Gupta
 
PDF
Building Cloud Native Applications
Arun Gupta
 
PDF
Chaos Engineering with Kubernetes
Arun Gupta
 
PDF
How to be a mentor to bring more girls to STEAM
Arun Gupta
 
PDF
Java in a World of Containers - DockerCon 2018
Arun Gupta
 
PPTX
The Serverless Tidal Wave - SwampUP 2018 Keynote
Arun Gupta
 
PDF
Introduction to Amazon EKS - KubeCon 2018
Arun Gupta
 
PDF
Mastering Kubernetes on AWS - Tel Aviv Summit
Arun Gupta
 
PDF
Top 10 Technology Trends Changing Developer's Landscape
Arun Gupta
 
PDF
Container Landscape in 2017
Arun Gupta
 
PDF
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Arun Gupta
 
PDF
Docker, Kubernetes, and Mesos recipes for Java developers
Arun Gupta
 
PDF
Thanks Managers!
Arun Gupta
 
PDF
Migrate your traditional VM-based Clusters to Containers
Arun Gupta
 
5 Skills To Force Multiply Technical Talents.pdf
Arun Gupta
 
Machine Learning using Kubernetes - AI Conclave 2019
Arun Gupta
 
Machine Learning using Kubeflow and Kubernetes
Arun Gupta
 
Secure and Fast microVM for Serverless Computing using Firecracker
Arun Gupta
 
Building Java in the Open - j.Day at OSCON 2019
Arun Gupta
 
Why Amazon Cares about Open Source
Arun Gupta
 
Machine learning using Kubernetes
Arun Gupta
 
Building Cloud Native Applications
Arun Gupta
 
Chaos Engineering with Kubernetes
Arun Gupta
 
How to be a mentor to bring more girls to STEAM
Arun Gupta
 
Java in a World of Containers - DockerCon 2018
Arun Gupta
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
Arun Gupta
 
Introduction to Amazon EKS - KubeCon 2018
Arun Gupta
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Arun Gupta
 
Top 10 Technology Trends Changing Developer's Landscape
Arun Gupta
 
Container Landscape in 2017
Arun Gupta
 
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Arun Gupta
 
Docker, Kubernetes, and Mesos recipes for Java developers
Arun Gupta
 
Thanks Managers!
Arun Gupta
 
Migrate your traditional VM-based Clusters to Containers
Arun Gupta
 

Recently uploaded (20)

PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PDF
Lecture A - AI Workflows for Banking.pdf
Dr. LAM Yat-fai (林日辉)
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
PPTX
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PPTX
Using Google Data Studio (Looker Studio) to Create Effective and Easy Data Re...
Orage Technologies
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PPTX
PCU Keynote at IEEE World Congress on Services 250710.pptx
Ramesh Jain
 
PDF
Basics of Electronics for IOT(actuators ,microcontroller etc..)
arnavmanesh
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
Lecture A - AI Workflows for Banking.pdf
Dr. LAM Yat-fai (林日辉)
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
The Future of Artificial Intelligence (AI)
Mukul
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Using Google Data Studio (Looker Studio) to Create Effective and Easy Data Re...
Orage Technologies
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PCU Keynote at IEEE World Congress on Services 250710.pptx
Ramesh Jain
 
Basics of Electronics for IOT(actuators ,microcontroller etc..)
arnavmanesh
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
Market Insight : ETH Dominance Returns
CIFDAQ
 

Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0

  • 1. <Insert Picture Here> Java Server Faces 2.0 Arun Gupta, Java EE & GlassFish Guy blogs.sun.com/arungupta, @arungupta
  • 2. The following/preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 2
  • 5. Facelets • Designed for JSF from beginning • XHTML + CSS • Document validation • Better error handling, including line numbers • Library prefixes as namespaces • EL directly in page: • #{bean.propertyname} • Templating made easy • ui:composition, ui:define, ui:insert • ui:include, ui:repeat 5
  • 6. Facelets – Sample Code <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Enter Name &amp; Password</title> </h:head> <h:body> <h1>Enter Name &amp; Password</h1> <h:form> <h:panelGrid columns="2"> <h:outputText value="Name:"/> <h:inputText value="#{simplebean.name}" title="name" id="name" required="true"/> <h:outputText value="Password:"/> <h:inputText value="#{simplebean.password}" title="password" id="password" required="true"/> </h:panelGrid> <h:commandButton action="show" value="submit"/> </h:form> </h:body> </html> 6
  • 11. Composite Components • Enable True Abstraction • Create a true, reusable, component from an arbitrary region of a page • Built by composing other components • “Using” and “Defining” page • Full support for using attached objects in the using page • Action methods • Validators, etc 11
  • 12. Composite Components – Sample Code 12
  • 13. Composite Component – Sample Code <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Enter Name &amp; Password</title> </h:head> <h:body> <h1>Enter Name &amp; Password</h1> <h:form> <h:panelGrid columns="2"> <h:outputText value="Name:"/> <h:inputText value="#{simplebean.name}" title="name" id="name" required="true"/> <h:outputText value="Password:"/> <h:inputText value="#{simplebean.password}" title="password" id="password" required="true"/> </h:panelGrid> <h:commandButton action="show" value="submit"/> </h:form> </h:body> </html> 13
  • 14. Composite Components - Mapping <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:ez="http://java.sun.com/jsf/composite/ezcomp"> <h:head> <title>Enter Name &amp; Password</title> </h:head> <h:body> <h1>Enter Name &amp; Password</h1> <h:form> <ez:username-password/> <h:commandButton action="show" value="submit"/> </h:form> . . . </h:body> WEB-INF </html> index.xhtml resources/ ezcomp/ username-password.xhtml http://blogs.sun.com/arungupta/entry/totd_147_java_server_faces 14
  • 16. Integrated Ajax • Inspiration – ADF, RichFaces, IceFaces, DynamicFaces • Two entry points: • Declarative: <f:ajax> tag, uses AjaxBehavior • Programmatic ajax • resource library javax.faces • resource name jsf.js • JavaScript namespace jsf.ajax. • jsf.ajax.request function 16
  • 17. Integrated Ajax – Sample Code <h:commandButton actionListener="#{sakilabean.findActors}" value="submit"> <f:ajax execute="length" render="actorTable totalActors"/> </h:commandButton> http://blogs.sun.com/arungupta/entry/totd_123_f_ajax_bean 17
  • 19. Partial State Saving • Inspired by Trinidad state saving • Save only the state that's changed since creation of the component tree • Per-view state size up to 4X smaller • Default for pages written with Facelets • All standard components implement this feature • Default for composite components 19
  • 21. View Parameters • Inspired by Page Parameters from Seam • Provides a declarative way to map request parameters to EL-reachable location • <f:viewParam>, <f:metadata> <f:metadata> <f:viewParam name="foo" value="#{bean.foo}"/> </f:metadata> page1.xhtml?foo=bar bean.foo will equal “bar” 21
  • 23. System Events • Inspired by Solaris Dtrace, Linux strace, etc. • Publish/Subscribe event bus for things that happen during the JSF Lifecycle • Adds to event listening abilities • FacesEvent/FacesListener • PhaseEvent/PhaseListener • SystemEvent/SystemEventListener 23
  • 25. System Events – Sample Code <h:inputText> <f:event type="preValidate" listener="#{bean.doSomePreValidation}"/> </h:inputText> <h:inputText value="#{myBean.text}"> <f:event type="beforeRender" listener="#{myBean.beforeTextRender}"/> </h:inputText> 25
  • 26. Resources 26
  • 27. Resources • Standard way to serve image, JavaScripts, CSS, … • No need for separate Servlet or Filter • Logically related to components, treat them that way • @ResourceDependency or @ResourceDependencies on custom components • Built in support for CSS, Image, JavaScript resources • /resources or /META-INF/resources 27
  • 28. Resource EL – Sample Code • #{resource['<resource>']} • #{resource['<library>:<resource>' ]} • Examples of use • <a href="#{resource['header.jpg']}" /> • <h:graphicImage value="#{resource['corp:header.jpg']}" /> 28
  • 29. Behaviors 29
  • 30. Behaviors • A Behavior is an interface and invents a new type of “attached object” which takes part in decode/encode of a component • 3 new behaviors – ClientBehavior, ClientBehaviorHolder, AjaxBehavior <h:commandLink onclick="return confirm('Really???')"/> <h:commandLink> <foo:confirm message="Really???"/> </h:commandLink> 30
  • 31. Optional “faces-config.xml” • <managed-bean> → @ManagedBean or @Named • Validator, Renderer, Listener, ... • Default navigation rules – match a view on the disk • Conditional navigation @Named(“simplebean”) public class SimpleBean { . . . } <h:commandButton action="show" value="submit"/> 31
  • 32. Lot more features ... • Annotations • Navigation • Exceptions • Validation • EL • Scopes • Project Stage 32
  • 33. Annotations • @ManagedBean • @*Scoped (Session, Request, etc) • @ManagedProperty • @FacesComponent • @FacesConverter • etc. • With implicit Navigation, may eliminate need for faces-config.xml in many cases 33
  • 34. Bookmarkable URLs <h:link outcome="viewEntry" value="Link"> <f:param name="entry" value="#{aBean.entry}"/> </h:link> <a href="http://localhost:8080/myapp/viewEntry.xhtml? entry=entry1">Link</a> 34
  • 35. EL (Expression Langauge) • #{component}, #{cc} (composite component): get the “currently” processed component / composite component • #{component.clientId} • #{component.messageList} 35
  • 36. Validation • Integration with JSR 303: Bean Validation • @NotEmpty String name; • default validator: javax.faces.Bean – automatically applied to all input fields • Default-validator: hook up a validator for all instances of EditableValueHolder • <f:validateBean>, <f:validateRequired>, <f:validateRegexp> 36
  • 37. Project Stage • Inspired by Rails • Development • Better error reporting, debugging • Production • Better performance 37
  • 38. JSF 2.2 http://jcp.org/en/jsr/detail?id=344 NEW • Ease of development • cc:interface is optional • JSF lifecycle is CDI aware • Runtime configuration options change • Support implementation of Portlet Bridge 2.0 • Support for HTML5 features • Forms, Heading/Section content model, ... • New components like FileUpload and BackButton 38
  • 39. References • glassfish.org • oracle.com/goto/glassfish • blogs.sun.com/theaquarium • glassfish.org/roadmap • youtube.com/user/GlassFishVideos • Follow @glassfish 39
  • 40. <Insert Picture Here> Java Server Faces 2.0 Arun Gupta, Java EE & GlassFish Guy blogs.sun.com/arungupta, @arungupta