2. Java Server Faces
adopting the standard
Roi Aldaag
Consultant, AlphaCSP
2
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
3. Agenda
Introduction
Architecture
Configuration
Features
Pros & Cons
3
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
4. Introduction
Not so long ago, if you “Googled“
the word JSF, you probably would
have come across …
4
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
5. Introduction
The F-35 Joint Strike Fighter (JSF) …
5
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
6. Introduction
Today you’d find…
JavaServer Faces Technology
6
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
7. Introduction :: What is JSF?
What is JSF ?
Specification
UI framework
Component based
Server side
Java web applications
7
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
8. Introduction :: Motivation
9 Billion Reasons for JSF…
8
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
9. Introduction :: Motivation
JCP Standard
JSF 1.0/1.1 JSR 127 May 2005
JSF 1.2 JSR 252 May 2006
JSF 2.0 JSR 314 Q4 2008 ?
/ JEE6
9
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
10. Introduction :: Motivation
Vendor adoption
JSF RI
MyFaces
10
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
11. Introduction :: Motivation
Popularity
Commercial Projects
Open Source Projects
Market
Documentation
11
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
12. Introduction :: Motivation
IDE integration
Visual tool support
Drag & Drop
Auto-complete
12
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
14. Introduction :: Motivation
View Technology
JSP / Servlet
Other template engines
Facelets
JSFTemplating
Multiple rendering output
from same pages
14
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
15. Introduction :: What is Seam?
What is Seam ?
A lightweight framework for JEE5
Unifies JSF and EJB models
(Web Beans / JSR 299)
Integrates JSF, POJOs, JPA, jBMP, Drools
Annotation / EL based
Extends JSF
JBoss OS (LGPL)
Release at 2006
Current version 2.0.2 SP1
15
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
16. Introduction :: What is Seam?
Misconceptions
Can be used without EJB3
Does not need a container
Has a small footprint
Easy integration
16
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
17. Introduction :: Why JSF+Seam?
Why JSF + Seam?
JSF has some weaknesses…
Seam extends and enhances JSF
Reduces boilerplate code
Annotations
RESTful URLs
JSF Lifecycle
Contextual state management
Ajax Remoting
Exception Handling
Simple Integration
EJB3 / jBMP/ Drools / Spring
17
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
18. Introduction :: Seam in action
18
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
19. Agenda
Introduction
Architecture
Configuration
Features
Pros & Cons
19
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
20. Architecture :: JSF MVC
Controller
Model
Config
(faces-config.xml)
View Request Events
(ValueChangeEvent,
ActionEvent)
Event Listeners &
Front Servlet Action Handlers
Controller
(FacesServlet) (ValueChangeListener,
ActionListener)
Component
Tree Component Business
(UIComponent) Model Objects
(Java Beans) (Managed Beans)
UIViewRoot
Delegates
UIForm (Convertors,
Validators,
Renderers)
Response UIPanel
UIInput UIInput
Resources
(JSP,
XML,
Properties)
View Model
20
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
21. Architecture :: JSF MVC
Controller
Model
Config
(faces-config.xml)
POJO’s Request Events
(ValueChangeEvent,
ActionEvent)
Event Listeners &
Front Servlet Action Handlers
(FacesServlet) (ValueChangeListener,
ActionListener)
Component
Tree Component Business
(UIComponent) Model Objects
(Java Beans) (Managed Beans)
UIViewRoot
Delegates
UIForm (Convertors,
Validators,
Renderers)
Response UIPanel
UIInput UIInput
Resources
(JSP,
XML,
Properties)
View Model
21
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
22. Architecture :: JSF MVC
Controller
Controller
Config
(faces-config.xml)
Front Servlet Request Events
(ValueChangeEvent,
ActionEvent)
Event Listeners &
Configuration Front Servlet
(FacesServlet)
Action Handlers
(ValueChangeListener,
ActionListener)
Event Listeners
Component
Tree Component Business
(UIComponent) Model Objects
(Java Beans) (Managed Beans)
UIViewRoot
Delegates
UIForm (Convertors,
Validators,
Renderers)
Response UIPanel
UIInput UIInput
Resources
(JSP,
XML,
Properties)
View Model
22
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
23. Architecture :: JSF MVC
Controller
View
Config
(faces-config.xml)
Component Tree Request Events
(ValueChangeEvent,
ActionEvent)
Event Listeners &
Component Model Front Servlet
(FacesServlet)
Action Handlers
(ValueChangeListener,
ActionListener)
Delegates
Resources Component
Tree
(UIComponent)
Component
Model
(Java Beans)
Business
Objects
(Managed Beans)
UIViewRoot
Delegates
UIForm (Convertors,
Validators,
Renderers)
Response UIPanel
UIInput UIInput
Resources
(JSP,
XML,
Properties)
View Model
23
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
24. Architecture :: Component Tree
JSF tags Component Tree Markup
...
UIViewRoot
<f:view>
HTML
<h:form>
<h:panelGrid columns = "2"> UIForm
<h:inputText/>
<h:inputSecret/> WML
</panelGrid>
UIPanel
</h:form>
</f:view>
..
JSP XML
UIInput UIInput
24
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
25. Architecture :: JSF Lifecycle
JSF Lifecycle Request
Restore View
1. Restore view
2. Apply request values Apply Request
Values
3. Process validations
4. Update model values Process Validation
5. Invoke application
6. Render response
Update Model
Values
Invoke Appilcation
Render Response
Response
25
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
26. Architecture :: Seam Lifecycle
Seam Lifecycle Request
Restore View
Restore
Conversation
1. Restore view
2. Restore Conversation Apply Request
Values
Apply Page
Parameters
3. Apply Page Parameters
4. Apply request values Process Validation
5. Process validations
6. Update model values
Update Model
Values
Process Data Model
7. Invoke application Selection
8. Process Selection
Invoke Appilcation
Invoke Page Action
9. Store Conversation
Render Response Store Conversation
10. Render response Response
26
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
27. Architecture :: Seam Concepts
Seam Concepts
1. Three Tier
2. POJOs and annotations
3. IoC and bijection
4. Contextual state management
5. Interceptors
27
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
28. Agenda
Introduction
Architecture
Configuration
Features
Pros & Cons
28
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
29. Configuration :: JSF
faces-config.xml
29
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
30. Configuration :: Seam
faces-config.xml
30
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
31. Configuration :: JSF
web.xml
31
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
32. Configuration :: Seam
web.xml
32
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
33. Agenda
Introduction
Architecture
Configuration
Features
Pros & Cons
33
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
34. Features :: Demo JSF Project
jsfLogin.jsp jsfMasterDetail.jsp
/webproj
src
managed
WebRoot
WEB-INF LoginBean.java MasterDetailBean.java
XML
JSP
XML
JSP
web.xml faces-config.xml
34
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
35. Features :: Demo Seam Project
jsfLogin.jsp jsfMasterDetail.jsp
/webproj
src
managed
WebRoot
WEB-INF
XML
LoginBean.java MasterDetailBean.java
XML
classes
JSP
seam.properties lib
components.xml JSP
web.xml faces-config.xml
jboss-seam.jar
jboss-seam-ui.jar
35
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
36. Features :: Demo Login page
jsfLogin.jsp
UIViewRoot
UIForm
UIPanel
UIPanel UIPanel
UIOutput UICommand
UIInput
UIOutput
UIInput
36
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
37. Features :: JSF Value Binding
LoginBean.java faces-config.xml
Managed Bean
jsfLogin.jsp
Unified EL
37
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
38. Features :: JSF Method Binding
LoginBean.java jsfLogin.jsp
Invoke Application
Phase
38
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
39. Features :: JSF State Management
jsfLogin.jsp jsfMasterDetail.jsp
User
Dependency Injection
39
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
40. Features :: Seam State Management
Contextual state management
Bijection
@In - Injection
@Out – Outjection
Dynamic, contextual, bidirectional
Context Scope
Event < Page < Conversation <
Business Process < Session < Application
Conversation
Temporary conversation
Long-running conversation
ConversationId
40
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
41. Features :: Seam State Management
MasterDetailBean.java
41
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
42. Features :: JSF Page Flow
LoginBean.java
jsfLogin.jsp jsfMasterDetail.jsp
faces-config.xml
42
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
43. Features :: Seam Page Flow
Page Actions
HTTP GET
Bookmarking
RESTful URLs
HTTP POST
HTTP GET
43
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
44. Features :: Seam Page Flow
Page Flow
<<Start State>>
start
JBoss Business Process Management (jBPM)
<<Page>>
login
Used to define process workflow / page flow
true
<<Decision>>
User
Define transition between pages authenticated ?
false
Define navigation rules for each page <<Page>>
contacts
Flow is based on events and conditions
<<End State>>
Back button
end
In conversation mode, back button is disallowed
Undefined transition
Seam blocks actions from “stale” pages
Redirects to relevant page
44
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
45. Features :: JSF Validations
MasterDetailBean.java
jsfMasterDetail.jsp
45
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
46. Features :: Seam Validations
MasterDetailBean.java
jsfMasterDetail.jsp
@org.hibernate.validator.Email
46
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
47. Features :: JSF Error Handling
javax.servlet.ServletException:
javax/servlet/jsp/tagext/JspIdConsumer
47
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
48. Features :: Seam Error Handling
48
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
49. Features :: Seam Error Handling
Exception Annotations
49
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
50. Features :: Demo MasterDetail page
jsfMasterDetail.jsp
MasterDetailBean.java
50
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
51. Features :: Demo MasterDetail page
jsfMasterDetail.jsp - continued
HtmlDataTable
HtmlColumn HtmlColumn
HtmlOutputText HtmlOutputText
51
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
52. Features :: JSF Ajax
Ajax: Page Wide
Page wide support (region, zone)
Add support to existing components
Sub view processing
Partial tree rendering
Normal lifecycle
Partial page refresh
Example:
Ajax4Jsf, Dynamic Faces
52
Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar