More Related Content
Similar to Newfeaturesincontext 130911052709-phpapp01
Similar to Newfeaturesincontext 130911052709-phpapp01 (20)
Newfeaturesincontext 130911052709-phpapp01
- 1. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I1
JSF 2.2 New Features
in Context
Edward Burns
@edburns
Consulting Member of Staff, Oracle
- 2. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I2
My plan for your time investment
How is JSF still relevant?
JSF 2.2 Big Ticket Features: in Context
– 1055 Stateless Views: Context: Performance
– 1090 HTML5 Friendly Markup: Context: Markup Evolution
– 730 Flows and 1142 Resource Library Contracts:
Context: Multi-tenancy and Modularity
Other features: Context free
- 3. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I3
The following 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.
- 4. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I4
JSR 127
– JSF 1.0 11 March 2004
– JSF 1.1 27 May 2004
JSR 252
– JSF 1.2 11 May 2006
– JSF 1.2 Maintenance Release 1
19 December 2006
– JSF 1.2 Maintenance Release 2
13 June 2008
– JSF 1.2 Maintenance Release 3
25 August 2008
Where is JSF in its Lifecycle?
JSR Timeline JSR 314
– JSF 2.0 1 July 2009
– JSF 2.1 16 July 2010
– JSF 2.1 Maintenance Release 2
22 November 2010
JSR 344
– Started 14 April 2011
– Early Draft Review released
8 December 2011
– Proposed Final Draft 14 Mar 2013
– Final June 2013
http://bit.ly/JavaEE7WrapsUp
- 5. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I5
WE STILL NEED WEB APPS THAT ARE
QUICK TO
BUILD,MAINTAINABLE, LOCALIZABLE, AC
CESSIBLE,
SECURE, DEVICE INDEPENDENT, GOOD
LOOKING, AND ARE FUN TO USE
How Can JSF Still Be Relevant?
Abstractions Endure
- 6. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I6
Is JSF Really That Old?
JavaOne 2001
technical keynote
- 7. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I7
Restate the Scope of JSF
Separate Component Semantics from Rendering
Allow components to “own” their little patch of the UI
– encode/decode
Well defined lifecycle: Inversion of Control
UI Logic Substantially on Server
- 8. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I8
Unofficial usage tracked at
http://bit.ly/RealWorldJsfLinks2
or google RealWorldJsfLinks
JSF Used on Every Continent
Real World JSF Links
- 10. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I10
What’s Hot Now?
HTML5 native applications
– JavaScript MVC frameworks
– REST
Dan North, thought leader
– “The Browser is Dead…”
http://bit.ly/DanNorthBrowserIsDead PDF
http://bit.ly/DanNorthBrowserIsDeadVideo YouTube
- 11. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I11
Dan North’s Assessment of What’s Hot Now
Technologies
– Graphics: 2D and 3D + transforms
– Client local storage
– Sever Sent Events: Web Sockets
– Ecmascript
Techniques
– Everything is asynchronous
– Don’t page template, just use the DOM (jQuery)
– No UI state on the server
- 12. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I12
Dan North’s Assessment of What’s Hot Now
Use standards…
– W3C standards
– JCP standards?
JSON JSR-353
WebSocket JSR-356
JAX-RS JSR-339
- 13. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I13
So why are these things hot now?
Flashy results?
Maintainability?
Better runtime performance potential for better user experience?
Wider reach?
- 14. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I14
So why are these things hot now?
Flashy results?
– This is a component library concern. Many component libraries have very
flashy components.
– Abstractions endure
Maintainability?
Better runtime performance potential for better user experience?
Wider reach?
JSF responses
- 15. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I15
So why are these things hot now?
Flashy results?
Maintainability?
– JavaEE/JSF was designed for large teams of corporate developers
producing code that needs to stick around long after said developers have
moved on.
– For example, emphasis on statically typed technologies
Better runtime performance potential for better user experience?
Wider reach?
JSF responses
- 16. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I16
So why are these things hot now?
Flashy results?
Maintainability?
Better runtime performance potential for better user experience?
– With any technology, including the HTML5 native approach, it is possible to
produce a poorly performing user experience. The question is how hard is
it to produce a decently performing one.
– Stateless JSF is a step in that direction.
Wider reach?
JSF responses
- 17. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I17
So why are these things hot now?
Flashy results?
Maintainability?
Better runtime performance potential for better user experience?
Wider reach?
– JSF was designed for client device independence
– HTML5, while growing, is still not at the least common denominator level
– Being able to support IE 6 is sometimes still important
JSF responses
- 18. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I18
So why are these things hot now?
Flashy results?
Maintainability?
Better runtime performance potential for better user experience?
Wider reach?
JSF responses
- 20. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I20
In reality, many approaches can co-exist
JSF for one class of developers/users
HTML5 native for another
Re-use in the application tier
- 21. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I21
Where is JSF in its Lifecycle?
Implementation Status
Oracle Mojarra JSF 2.2.0 is in GlassFish 4.0, which requires JDK7
It will also run on GlassFish 3.1+, which requires JDK6
It will also run on Tomcat 7 (but you must bring your own CDI if you
want to use CDI dependent features such as Faces Flows)
- 22. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I22
My plan for your time investment
How is JSF still relevant?
Big Ticket Features: in Context
– 1055 Stateless Views: Context: Performance
– 1090 HTML5 Friendly Markup: Context: Markup Evolution
– 730 Flows and 1142 Resource Library Contracts:
Context: Multi-tenancy and Modularity
Other features: Context free
- 23. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I23
JSF 2.2 Big Ticket Features
in Context
Issue numbers relative to JSF JIRA
http://jsf-spec.java.net/issues/
- 24. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I24
New to JSF?
JSF 2.0 was a blockbuster release
– Facelets
– Composite Components
– Ajax
– Resource Libraries
2.0 Big Ticket Feature Review
- 25. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I25
1055 Stateless JSF
Kinds of state in a JSF app
– UIComponent state
– Model tier state
– Persistence tier state
What is state?
- 26. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I26
1055 Stateless JSF
Kinds of state in a JSF app
– UIComponent state
– Model tier state
– Persistence tier state
What is state?
- 27. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I27
1055 Stateless JSF
Kinds of state in a JSF app
– UIComponent state
– Model tier state
– Persistence tier state
Context: Stateless is important mostly as performance concern
– See http://bit.ly/LeonardoJsfPerformance Leonardo Uribe’s paper
– Much can be done in the way you use JSF to reduce statefulness
What is state?
- 28. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I28
1055 Stateless JSF
Leverage existing API
Biggest gain for smallest change
– Expose existing UIComponent transient property on f:view
<f:view transient=“true”>
– Spec changes in Restore View Phase, ResponseStateManager
Be advised
– Must be on outer-most <f:view> in Facelets inclusion
– View scoped managed beans will not work if the view is marked stateless
JSF 2.2 approach to stateless
- 29. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I29
1055 Stateless JSF
Automatic state management is a key value-add of JSF
– Differentiates it from RESTful
Pros
– Can be lazy with your UI,
Why is this important?
- 30. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I30
1090 HTML5 Friendly Markup
This is a JSF page
The best part of Wicket comes to JSF
- 31. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I31
1090 HTML5 Friendly Markup
JSF Views are written in a View Declaration Language (VDL).
The standard Facelet VDL is an XML application with two kinds of
elements
– HTML Markup
– JSF Components
HTML Markup is passed through straight to the browser
JSF Components take some action on the server, during the lifecycle
Let’s get back to basics
- 32. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I32
1090 HTML5 Friendly Markup
Before JSF 2.2
– JSF tags hide complexity of underlying HTML+script+css+images
– JSF “Renderer”:
encode: markup to browser
decode: name=value from browser
<html>…
<my:colorPicker value=“#{colorBean.color2}” />
<my:calendar value=“#{calendarBean.date1}” />
</html>
Context: Missing feature in browser? Write a JSF component.
Let the elegance of HTML shine through
- 33. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I33
1090 HTML5 Friendly Markup
With JSF 2.2
– Pure HTML+script+css+images in the JSF page
– JSF Renderer handles decode from browser
Leverage the strength of the JSF lifecycle
Leverage the expressiveness of HTML5
<html>…
<input type=“color” jsf:value=“#{colorBean.color2}”/>
<input type=“date” jsf:value=“#{calendarBean.date1}” />
</html>
Context: New feature in browser? Use “pass through elements”
Let the elegance of HTML shine through
- 34. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I34
1090 HTML5 Friendly Markup
DEMO
Let the elegance of HTML shine through
- 35. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I35
1142 Resource Library Contracts
730 Faces Flows
Allow composing a JSF app as a
collection of modules
– Faces Flows modularize behavior
– Resource Library Contracts modularize
appearance
Well defined contract for each
Modularity and Multi-tenant capability
- 36. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I36
1142 Resource Library Contracts 730 Faces Flows
Two new concepts in JSF 2.2
– Resource Library Contract
– Faces Flows
What’s going on here?
Builds on facelets concepts
Builds on navigation concepts
- 37. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I37
Resource Library Contracts
Facelets Review
<ui:define name="headline">
Today's News
</ui:define>
<ui:define name="story">
Facelets is now a part
of JSF 2.0...
</ui:define>
T eFaceletsGazet e
Sit
Navigat on
● Events
● Docs
● Forums
About Contact Sit M ap
_template.html
template client
greeting.html
- 38. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I38
Resource Library Contracts
Facelets Review T eFaceletsGazet e
Sit
Navigat on
● Events
● Docs
● Forums
About Contact Sit M ap
Template File name
_template.html
Insertion points
Resources
css classes, scripts, images
- 39. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I39
Resource Library Contracts
A Contract is Born
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractA
- 40. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I40
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
- 41. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I41
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
- 42. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I42
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
- 43. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I43
Resource Library Contracts
Loading Conventions
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
Facelet 1 Facelet 3Facelet 2
- 44. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I44
Resource Library Contracts
Loading Configuration
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
Facelet 1 Facelet 3Facelet 2
faces-config.xml
- 45. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I45
Resource Library Contracts
Loading Configuration
contractA
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractB
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractC
• Declared Templates
• Declared Insertion Points
• Declared Resources
<web-app-root>/contracts
contractD
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractE
• Declared Templates
• Declared Insertion Points
• Declared Resources
contractF
• Declared Templates
• Declared Insertion Points
• Declared Resources
JAR files in WEB-INF/lib
Set of available contracts
Facelet 1
<f:view contracts="contractA">
...
Facelet 3Facelet 2
faces-config.xml
- 46. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I46
Resource Library Contracts
Resource Library Contract
– Convention
Available contracts discovered at startup
All of them are made available to the application
Assumes there are no naming collisions
– Configuration
faces-config.xml <resource-library-contracts> element
– Controls which parts of the app are allowed to use which contracts
contracts attribute in <f:view>
– Declares that this view is only able to use these named contracts
Modular Appearance
- 47. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I47
Faces Flows
Standards are for Standardizing, Not Innovating
ADF Task Flows
Spring Web Flow
Apache MyFaces CODI
Architectural Pedigree
- 48. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I48
Flow Concepts
Can be “called” from any place in the application
Single entry point
Input parameters and return values
Well defined interface contract
– Internal implementation details hidden
New flowScoped for flow local storage
New @FlowScoped CDI annotation: automatic activation/passivation
Hint: Think of a flow like a Java method
- 49. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I49
Flow Navigation
Navigation is no longer just between pages
Navigation is now between flow “nodes”
Information Hiding comes to JSF. Welcome to 1972!
Multiple node types:
– View
– Method Call
– Switch
– Flow Call
– Flow Return
- 50. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I50
Flow Navigation
Flow represented at
runtime by instance of
javax.faces.flow.Flow
JSF 2.2 authoring
experience
– XML
– Builder
- 51. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I51
730 Faces Flows 1142 Resource Library Contracts
Two new concepts in JSF 2.2
– Resource Library Contract
– Faces Flows
Each builds on the packaging scheme in JSF 2.0
– A special directory in the web app root
/contracts
/flows
– A special location in the Classpath
/META-INF /contracts
/META-INF/flows
What’s going on here?
- 52. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I52
730 Faces Flows 1142 Resource Library Contracts
Two new concepts in JSF 2.2
– Resource Library Contract
– Faces Flows
Each builds on the packaging scheme in JSF 2.0
– A special directory in the web app root
/contracts
/flows
– A special location in the Classpath
/META-INF /contracts
/META-INF/flows
What’s going on here?
Useful during development
Useful during deployment
}
}
- 53. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I53
1142 Resource Library Contracts
DEMO
Explore the contracts aspect of flow_and_contract and scrumtoys demo
- 54. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I54
730 Faces Flows
Standards are for Standardizing, Not Innovating
ADF Task Flows
Spring Web Flow
Apache MyFaces CODI
Architectural Pedigree
- 55. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I55
730 Faces Flows
Can be “called” from any place in the application
Single entry point
Input parameters and return values
Well defined interface contract
– Internal implementation details hidden
New facesFlowScope for flow local storage
New @FlowScoped CDI annotation: automatic activation/passivation
Hint: Think of a flow like a Java method
- 56. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I56
Navigation is no longer just between pages
Navigation is now between flow “nodes”
Information Hiding comes to JSF. Welcome to 1972!
Multiple node types:
– View
– Method Call
– Switch
– Flow Call
– Flow Return
730 Faces Flows
Navigation
- 57. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I57
Flow represented at
runtime by instance of
javax.faces.flow.Flow
JSF 2.2 authoring
experience
– XML
– Builder
730 Faces Flows
Navigation
- 58. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I58
Flow Definition
Name of the flow
Where does the flow start?
Input values
Optional initializer & finalizer
- 59. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I59
Flow Definition
- 60. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I60
730 Faces Flows
Spec challenge
Ensuring the feature works well with the existing JSF features
– POSTback based navigation: <h:command{Button,Link}>
– GET based navigation: <h:{button,link}>
Navigation rules
– Was one level
– Now is a stack
– “return” case was tricky
- 61. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I61
My plan for your time investment
How is JSF still relevant?
Big Ticket Features: in Context
– 1055 Stateless Views: Context: Performance
– 1090 HTML5 Friendly Markup: Context: Markup Evolution
– 730 Flows and 1142 Resource Library Contracts:
Context: Multi-tenancy and Modularity
Other features: Context free
- 62. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I62
Other Features
• Medium Sized
• Small Sized
- 63. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I63
Medium Sized Features
1. 1042 ViewActions
2. 869 CSRF protection
3. 949 ClientWindow
4. 802 File Upload
5. 763 CDI injection of JSF artifacts
6. 599 Programmatic Composite Component creation
7. 594, 703 FacesComponent enhancetments
8. 479 UIData implements Collection
9. 1001 Composite and Java components in the same library
10. 533 Programmatic faces-config
- 64. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I64
1042 ViewActions
JSF 2.0 introduced <f:metadata>
– Use with <f:viewParam>
JSF 2.2 introduces <f:viewAction>
– Use inside of <f:metadata>
– Use along side of <f:viewParam>
Like a button that clicks itself
– Can cause navigation
– Can choose the lifecycle phase
UIViewAction component sits behind <f:viewAction> tag.
- 65. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I65
869 Cross Site Request Forgery Protection
What is Cross Site Request Forgery
(CSRF, pronounced SEE-surf)?
– http://en.wikipedia.org/wiki/Cross-site_request_forgery
– Trick the browser into sending requests that the user did not actually intend
to initiate
JSF Is Not Just for POSTback Anymore
- 66. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I66
869 Cross Site Request Forgery Protection
How does JSF protect your app against this attack?
1. It already does and always has!
POSTback is a virture. JSF 2.2 just makes encryption of the view state on
by default
2. New <protected-views> section in faces-config
View Token
– When rendering a non-POSTback link or button
Referer [sic] and Origin headers
JSF Is Not Just for POSTback Anymore
- 67. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I67
949 ClientWindow
JSF finally has framework level support for the many different ways a
UIComponent tree can be rooted
– Browser tab
– Browser window
– Browser pop-up
– Portlet
– …
New class javax.faces.lifecycle.ClientWindow
– A client window is always associated with exactly one UIViewRoot instance
at a time, but may display many different UIViewRoots during its lifetime.
- 68. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I68
949 ClientWindow
FacesServlet now must call Lifecycle.attachWindow()
Lifecycle.attachWindow()
– Takes no action unless feature is enabled
– Looks for incoming client window
– Creates one if not present
– Stores it on the ExternalContext
How does it work?
- 69. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I69
802 File Upload Component
For the benefit of Apache Tomcat users, JSF has always chosen to lag
one Servlet version behind the Java EE umbrella spec in which it is
included
Why so long?
Included
JSF
Version
Included
Servlet
Version
Minimum Servlet
Version for
Included JSF
J2EE 1.4 1.1 2.4 2.3
Java EE 5 1.2 2.5 2.4
Java EE 6 2.0 3.0 2.5
Java EE 7 2.2 3.1 3.0
- 70. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I70
Final spec has “Ajax” and non-Ajax support
“Ajax” can be XHR level 2 or hidden IFRAME
<h:inputFile id="file"
value="#{fileUploadBean.uploadedFile}">
<f:validator validatorId="FileValidator" />
</h:inputFile>
802 File Upload Component
Usage
- 71. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I71
@ManagedBean
@RequestScoped
public class FileUploadBean {
private Part uploadedFile; // getter/setter
public String getFileText() {
String text = "";
if (null != uploadedFile) { try {
InputStream is = uploadedFile.getInputStream();
text = new Scanner( is ).useDelimiter("A").next();
} catch (IOException ex) {}
}
return text;
}
}
802 File Upload Component
Usage
- 72. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I72
@FacesValidator(value="FileValidator")
public class FileValidator implements Validator {
@Override public void validate(FacesContext context,
UIComponent component, Object value) throws ValidatorException {
Part file = (Part) value;
try {
InputStream is = file.getInputStream();
text = new Scanner( is ).useDelimiter("A").next();
} catch (Exception ex) { throw new ValidatorException(“”, ex); }
if (!text.contains("JSR-344")) {
throw new ValidatorException(new FacesMessage("Invalid file”);
}
}
802 File Upload Component
Usage
- 73. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I73
763 CDI Injection of JSF Artifacts
All Common Annotation and CDI Annotations must work in
– ELResolvers
– Factories
– JSF singletons (ResourceHandler, StateManager, etc)
– ActionListeners
- 74. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I74
599 Programmatic Component Creation
Application.createComponent()
– Used to create UIComponent instances given component-family, etc
ViewDeclarationLanguage.createComponent()
– Used to create UIComponent instances given tag library URI, tag name,
and optional attributes
– Equivalent to using the tag in a page
– Designed for use with composite components
- 75. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I75
594, 703 FacesComponent enhancements
@FacesComponent added in JSF 2.0
– Allows declaring a UIComponent to the runtime
JSF 2.2 adds new attributes (with sensible defaults)
– createTag causes a facelet tag handler to automatically be created
– namespace declares the tag library namespace in which the tag handler
will reside
– tagName declares the tag name
– value now has a default behavior
- 76. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I76
479 UIData supports Collection
Prior to JSF 2.2, UIData only supported
– Arrays
– java.util.List
– java.sql.ResultSet
– javax.servlet.jsp.jstl.sql.Result
JSF 2.2 adds
– java.util.Collection
- 77. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I77
1001 Composite and Regular Components
Prior to JSF 2.2, was not possible to have both kinds of components in
the same tag library
Now it is.
Both in the same tag library
- 78. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I78
533 Programmatic faces-config
New class
javax.faces.application.ApplicationConfigurationPopulator
Is a java.util.ServiceLoader service
Has a populateApplicationConfiguration() method
– Gets passed an “empty” DOM Document
– You can populate it as if it were a regular faces-config.xml file.
– It gets put in with the rest of the discovered faces-config files.
- 79. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I79
Other Features
• Medium Sized
• Small Sized
- 80. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I80
Small Sized Features
1142 “reset button” API
766 Events from the Flash
1134 “role” passthrough attribute
1050 Ajax delay
1085 httpOnly cookie support
- 82. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. I82
The preceding was intended to outline our general product direction. It was
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.