Transcript
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


Recommended