49
JSF 2.0 Robert Reiz Tuesday, February 23, 2010

Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Embed Size (px)

DESCRIPTION

JSF (JavaServer Faces) ist seit 2004 der Standard für komponentenbasierte Webanwendungen. Anfangs nur belächelt und als Intranetlösung abgetan, ist JSF heute eine stabile Grundlage, auch für Webanwendungen im Internet. Seit Juni 2009 ist mit JSR 314 die Version 2.0 fertig spezifiziert. Dieser Vortrag von Robert Reiz gibt eine kurze Einführung in die Grundlagen, einen kurzen geschichtlichen Rückblick und eine Einführung in die neuen Features von JSF 2.0. Grundlagen und Rückblick Vorstellung von JSF 2.0 Fazit

Citation preview

Page 1: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

JSF 2.0Robert Reiz

Tuesday, February 23, 2010

Page 2: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Robert Reiz Dipl. Inf. (FH-Mannheim)

Buch Mail-Travel-Agents auf Linux-Systemen

Java-Projekte seit 2002

JSF-Erfahrung seit 2006

Gründung der PLOIN GmbH Jan. 2008

Trainer bei der GFU seit Dez. 2008

Trainer

Tuesday, February 23, 2010

Page 3: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Trainer

Comitter

ploinFaces

ploinMailFactory

Blog

http://www.robert-reiz.de

Tuesday, February 23, 2010

Page 4: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Eine Presentation ist keine Dokumentation!Eine Presentation soll lediglich den Speaker bei seinem

Vortrag unterstützen!

Tuesday, February 23, 2010

Page 5: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Wer kennt JSF ?

Tuesday, February 23, 2010

Page 6: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Was ist JSF ?

Tuesday, February 23, 2010

Page 7: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

JSF 1.0 - JSR 127 - May 2004 JSF 1.2 - JSR 252 - May 2006 JSF 2.0 - JSR 314 - Julie 2009

Standards

Tuesday, February 23, 2010

Page 8: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Restore ViewApply Request

ValuesProcess

Validations

Update Modell Values

Invoke Applications

Render Response

Request

Response

Lifecycle

Tuesday, February 23, 2010

Page 9: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"

xmlns:ui="http://java.sun.com/jsf/facelets"

jsf.js

JSF 1.2

JSF 2.0

xmlns:composite="http://java.sun.com/jsf/composite"

Tuesday, February 23, 2010

Page 10: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<h:selectOneListbox id="edit_workUnit_selectedProject" value="${managedBean[projectItem]}" style="width:200px; height:200px;" required="true"> <f:selectItems value="#{managedBean.projectList}"/></h:selectOneListbox>

<h:commandButton value="Speichern" actionListener="#{managedBean.doLoginListener}" action="#{loginBean.doLogin}" />

Tuesday, February 23, 2010

Page 11: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Tuesday, February 23, 2010

Page 12: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Implementierungen

JSF-RI (mojarra)

MyFaces-Core

Tuesday, February 23, 2010

Page 13: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Flora und Fauna

RichFaces IceFacesADF

TrinidadOrchestra

Tomahawk

PrimeFaces

ploinFacesTobago

Netadvantage

Woodstock

Facelets

Tuesday, February 23, 2010

Page 14: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Matrix

http://www.jsfmatrix.net/

Tuesday, February 23, 2010

Page 15: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Nachteile von JSF 1.X

Tuesday, February 23, 2010

Page 16: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Nicht Bookmarkfähig -> PostBackPattern Lange XML-Konfiguration Kein Templating mit JSP Kein Resourcen-Handing Kein AJAX Wenig Convention -> Viel Configuration

JSF 1.X

Tuesday, February 23, 2010

Page 17: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

JSF 2.0

Tuesday, February 23, 2010

Page 18: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

XML-Freie Konfig. mit Annotationen Facelets ist der neue Standard

Facelets-Comp. mit Interfaces/Impl. Standartisiertes AJAX Bookable links/buttons

JSF 2.0 - Big changes

Tuesday, February 23, 2010

Page 19: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Neue Scopes System-events Direkte Navigation ProjectStage Neue Methoden in der FacesContext ....

JSF 2.0 - Small changes

Tuesday, February 23, 2010

Page 20: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Status Quo JSF 2.0

JSF-RI (mojarra)

MyFaces-Core

RichFacesIceFaces

PrimeFaces

ploinFaces

Tuesday, February 23, 2010

Page 21: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Annotations

Tuesday, February 23, 2010

Page 22: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

@ManagedBean@RequestScopedpublic class LogInBean {

private static final long serialVersionUID = 199L; private String loginName = "admin"; @ManagedProperty(name = "pass", value="admin") private String password;

private String doNavigate(){ return "/page/welcome";

}

}

Tuesday, February 23, 2010

Page 23: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Facelets

Tuesday, February 23, 2010

Page 24: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Nicht 1:1 übernommen Templating 15% schneller als JSP Einfache Komponentenentwicklung Schnittstelle für composite-components

Facelets

Tuesday, February 23, 2010

Page 25: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

layout.xhtml

login.xhtml myData.xhtmlwelcome.xhtml

Facelets - Template

Tuesday, February 23, 2010

Page 26: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"><h:head> <link rel="stylesheet" type="text/css" href="../css/layout.css" /></h:head><h:body> <div id="header" align="center"> <ui:insert name="header"> HEADER - ${title} </ui:insert> </div>

<div id="content"> <ui:insert name="content"> Content </ui:insert> </div>

<div id="footer" align="center"> <ui:insert name="footer" > FOOTER </ui:insert> </div>

</h:body></html>

Facelets - Template

Tuesday, February 23, 2010

Page 27: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Facelets - Template

<ui:composition template="/page/layout.xhtml"> <ui:param name="title" value="LOGIN SITE" /> <ui:define name="content"> ... Hier Inhalt </ui:define></ui:composition>

Tuesday, February 23, 2010

Page 28: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:composite="http://java.sun.com/jsf/composite"><head><title>MyComponent</title></head><body>

<composite:interface> <composite:attribute name="title"/> </composite:interface> <composite:implementation> <div style="border: 1px soldi red"> <h1>#{cc.attrs.title}</h1>

... XHTML oder JSF-Komponenten </div> </composite:implementation>

</body></html>

Facelets - Compon.

Tuesday, February 23, 2010

Page 29: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<html xmlns:gfu="http://java.sun.com/jsf/composite/gfu">

<gfu:myComponent title="Panel-Header" />

Facelets - Compon.

Tuesday, February 23, 2010

Page 30: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Clean Code

Tuesday, February 23, 2010

Page 31: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

AJAX

Tuesday, February 23, 2010

Page 32: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<f:ajax event="keyup" execute="@form" render="form:result" />

AJAX

Tuesday, February 23, 2010

Page 33: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<h:form id="form"> <h:inputText value="#{welcomeBean.text}" > <f:ajax event="keyup" execute="@form" render="form:result" /> </h:inputText> <h:outputText id="result" value="#{welcomeBean.text}" /></h:form>

AJAX

Tuesday, February 23, 2010

Page 34: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

jsf.ajax.request(source, event, options)

jsf.ajax.response(request, context)

jsf.ajax.addOnEvent(callback)

jsf.ajax.addOnError(callback)

AJAX

Tuesday, February 23, 2010

Page 35: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Resources

Tuesday, February 23, 2010

Page 36: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Resources

<h:outputStylesheet name="css/style.css" /><h:outputScript name="jsf.js" libary="javax.faces" target="head" /><h:graphicImage value="#{resource['lib:gfu.gif']}" />

Tuesday, February 23, 2010

Page 37: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

[localePrefix/][libraryName/][libraryVersion/]resourceName[/resourceVersion]

/META-INF/resources/compLib/script/compScript.js

/resources/compLib/1.1/script/compScript.js

Tuesday, February 23, 2010

Page 38: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Bookable Pages

Tuesday, February 23, 2010

Page 39: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<h:link outcome="/page/welcome" value="testLink" includeViewParams="true" > <f:param name="userId" value="5" /></h:link>

<a href="/demoJsf2/page/welcome.jsf?userId=5">testLink</a>

Bookable

Tuesday, February 23, 2010

Page 40: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<h:button outcome="/page/welcome" value="testLink" includeViewParams="true" > <f:param name="userId" value="5" /></h:button>

Bookable

<input type="button"  value="testLink"  onclick="window.location.href='/demoJsf2/page/welcome.jsf?userId=5'; return false;"/>

Tuesday, February 23, 2010

Page 41: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Scopes

Tuesday, February 23, 2010

Page 42: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Application Session Request View Flash Custom None

Scopes

Tuesday, February 23, 2010

Page 43: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Flows/Conversation

Tuesday, February 23, 2010

Page 44: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<flow id="loginFlow"> <views> <view>/login.xhtml</view> <view>/page/help/agbLogin.xhtml</view> <view>/page/help/haftungLogin.xhtml</view> </views> <attributes> <attribute>logInOutBean</attribute> </attributes> </flow>

Flows - ploinFaces

Tuesday, February 23, 2010

Page 45: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Flows - ploinFaces

<flow id="useradministrationFlow"> <views> <view>/page/useradmin.*</view> </views> <attributes> <attribute>useradminBean</attribute> <attribute>secureBean</attribute> </attributes> </flow>

Tuesday, February 23, 2010

Page 46: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

<authoritySource>#{sessionBean.loginUserRole}</authoritySource>

<accessDeniedPage>/page/accessDenied.xhtml</accessDeniedPage>

<flow id="useradministrationFlow"> <views> <view>/page/useradmin.*</view> </views> <attributes> <attribute>useradminBean</attribute> <attribute>secureBean</attribute> </attributes> <includeAuthorities> <authority>Administrator</authority> <authority>GIS</authority> </includeAuthorities> </flow>

Flows - ploinFaces

Tuesday, February 23, 2010

Page 47: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

Clean Code

Tuesday, February 23, 2010

Page 48: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

DEMO

Tuesday, February 23, 2010

Page 49: Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen

? ? ?

Tuesday, February 23, 2010