64
JSF 2.2 Input/Output Edward Burns @edburns http://slideshare.net/edburns/ Consulting Member of Staff, Oracle

JSF 2.2 Input Output JavaLand 2015

Embed Size (px)

Citation preview

Page 1: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 1

JSF 2.2 Input/Output Edward Burns @edburns http://slideshare.net/edburns/ Consulting Member of Staff, Oracle

Page 2: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 2

My plan for your time investment

§  How is JSF still relevant?

§  JSF 2.3 Plans

§  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

Page 3: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 3

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.

Page 4: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 4

§  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 – Final June 2013 http://bit.ly/

JavaEE7WrapsUp §  JSR 372

§  Started 22 Sep 2014 §  Final CY 2016

Page 5: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 5

WE STILL NEED WEB APPS THAT ARE QUICK TO BUILD,MAINTAINABLE, LOCALIZABLE, ACCESSIBLE, SECURE, DEVICE INDEPENDENT, GOOD LOOKING, AND ARE FUN TO USE

How Can JSF Still Be Relevant? Abstractions Endure

Page 6: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 6

What About the MVC JSR?

§ Facelets § Scopes

–  Flash –  View Scope

Alignment between JSF and MVC

M

Page 7: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 7

§ Tie up the loose ends –  Specification clarifications –  CDI alignment

§  Ease of use e.g. @Inject FacesContext

§  @Inject into Validators, Converters, etc.

–  HtmlInputHidden is ClientBehaviorHolder

§ Small scale new features

§ Subject to Spec Lead oversight –  JSON ajax component rendering –  Stateless enhancements –  GET enhancements –  Adopt-a-JSR support

JSF 2.3 in Java EE 8

Two feature drivers, each with their own agenda

M

Page 8: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 8

JSF 2.3 Small Scale New Features

§ End of the line for non-CDI managed beans –  Redefine meaning of @javax.faces.bean.ManagedBean to be CDI bean –  Redefine corresponding XML syntax to be CDI bean

§ Ajax method invocation –  A Faces request –  Not specific to a view –  Is specific to a ClientWindow –  Returns results in JSON

§ Multi-component validation M

Page 9: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 9

My plan for your time investment

§  How is JSF still relevant?

§  JSF 2.3 New Plans

§  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

Page 10: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 10

JSF 2.2 Big Ticket Features in Context

Issue numbers relative to JSF JIRA http://jsf-spec.java.net/issues/

Page 11: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 11

New to JSF?

§  JSF 2.0 was a blockbuster release –  Facelets –  Composite Components –  Ajax –  Resource Libraries

2.0 Big Ticket Feature Review

Page 12: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 12

1055 Stateless JSF

§ Kinds of state in a JSF app –  UIComponent state –  Model tier state –  Persistence tier state

What is state?

Page 13: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 13

1055 Stateless JSF

§ Kinds of state in a JSF app –  UIComponent state –  Model tier state –  Persistence tier state

What is state?

Page 14: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 14

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?

Page 15: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 15

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

Page 16: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 16

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?

Page 17: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 17

1090 HTML5 Friendly Markup

§ This is a JSF page

The best part of Wicket comes to JSF

<!DOCTYPE html>!<html xmlns="http://www.w3.org/1999/xhtml"! xmlns:myNS="http://xmlns.jcp.org/jsf”>!<form myNS:id="form">! <input name="textField" type="text" myNS:value="#{bean.text1}" />! <input type="submit" myNS:id="submitButton" value="submit" /> ! <p>submitted text: #{bean.text1}.</p>!</form>!</html>!!

Page 18: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 18

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

Page 19: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 19

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

Page 20: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 20

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

Page 21: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 21

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

Page 22: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 22

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

Page 23: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 23

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>

The Facelets Gazette

SiteNavigation

●Events

●Docs

●Forums

About Contact Site Map

_template.html

template clientgreeting.html

Page 24: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 24

Resource Library Contracts Facelets Review The Facelets Gazette

SiteNavigation

●Events

●Docs

●Forums

About Contact Site Map

Template File name _template.html

Insertion points

Resourcescss classes, scripts, images

Page 25: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 25

Resource Library Contracts A Contract is Born

• Declared Templates• Declared Insertion Points• Declared Resources

contractA

Page 26: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 26

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

Page 27: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 27

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

• 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

Page 28: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 28

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

• 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

Page 29: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 29

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

• 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

Page 30: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 30

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

• 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

Page 31: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 31

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

• 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

Page 32: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 32

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

Page 33: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 33

Faces Flows

Standards are for Standardizing, Not Innovating § ADF Task Flows § Spring Web Flow § Apache MyFaces CODI

Architectural Pedigree

Page 34: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 34

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

Page 35: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 35

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

Page 36: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 36

Flow Navigation

§ Flow represented at runtime by instance of javax.faces.flow.Flow

§  JSF 2.2 authoring experience

–  XML –  Builder

Page 37: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 37

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?

Page 38: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 38

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

} }

Page 39: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 39

Flow Definition

§ Name of the flow § Where does the flow start? §  Input values § Optional initializer & finalizer

Page 40: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 40

Flow Definition

Page 41: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 41

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

Page 42: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 42

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

Page 43: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 43

Other Features •  Medium Sized

•  Small Sized

Page 44: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 44

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

Page 45: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 45

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.

Page 46: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 46

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

Page 47: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 47

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

Page 48: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 48

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.

Page 49: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 49

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?

Page 50: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 50

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

Page 51: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 51

§ 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

Page 52: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 52

@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

Page 53: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 53

@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

Page 54: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 54

763 CDI Injection of JSF Artifacts

§ All Common Annotation and CDI Annotations must work in –  ELResolvers –  Factories –  JSF singletons (ResourceHandler, StateManager, etc) –  ActionListeners

Page 55: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 55

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

Page 56: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 56

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

Page 57: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 57

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

Page 58: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 58

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

Page 59: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 59

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.

Page 60: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 60

Other Features •  Medium Sized

•  Small Sized

Page 61: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 61

Small Sized Features

§ 1142 “reset button” API § 766 Events from the Flash § 1134 “role” passthrough attribute § 1050 Ajax delay § 1085 httpOnly cookie support

Page 62: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 62

Comments to @edburns

Page 63: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 63

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.

Page 64: JSF 2.2 Input Output JavaLand 2015

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. I 64