Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen
-
Upload
gfu-cyrus-ag -
Category
Technology
-
view
2.319 -
download
2
description
Transcript of Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Webanwendungen
JSF 2.0Robert Reiz
Tuesday, February 23, 2010
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
Trainer
Comitter
ploinFaces
ploinMailFactory
Blog
http://www.robert-reiz.de
Tuesday, February 23, 2010
Eine Presentation ist keine Dokumentation!Eine Presentation soll lediglich den Speaker bei seinem
Vortrag unterstützen!
Tuesday, February 23, 2010
Wer kennt JSF ?
Tuesday, February 23, 2010
Was ist JSF ?
Tuesday, February 23, 2010
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
Restore ViewApply Request
ValuesProcess
Validations
Update Modell Values
Invoke Applications
Render Response
Request
Response
Lifecycle
Tuesday, February 23, 2010
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
<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
Tuesday, February 23, 2010
Implementierungen
JSF-RI (mojarra)
MyFaces-Core
Tuesday, February 23, 2010
Flora und Fauna
RichFaces IceFacesADF
TrinidadOrchestra
Tomahawk
PrimeFaces
ploinFacesTobago
Netadvantage
Woodstock
Facelets
Tuesday, February 23, 2010
Matrix
http://www.jsfmatrix.net/
Tuesday, February 23, 2010
Nachteile von JSF 1.X
Tuesday, February 23, 2010
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
JSF 2.0
Tuesday, February 23, 2010
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
Neue Scopes System-events Direkte Navigation ProjectStage Neue Methoden in der FacesContext ....
JSF 2.0 - Small changes
Tuesday, February 23, 2010
Status Quo JSF 2.0
JSF-RI (mojarra)
MyFaces-Core
RichFacesIceFaces
PrimeFaces
ploinFaces
Tuesday, February 23, 2010
Annotations
Tuesday, February 23, 2010
@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
Facelets
Tuesday, February 23, 2010
Nicht 1:1 übernommen Templating 15% schneller als JSP Einfache Komponentenentwicklung Schnittstelle für composite-components
Facelets
Tuesday, February 23, 2010
layout.xhtml
login.xhtml myData.xhtmlwelcome.xhtml
Facelets - Template
Tuesday, February 23, 2010
<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
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
<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
<html xmlns:gfu="http://java.sun.com/jsf/composite/gfu">
<gfu:myComponent title="Panel-Header" />
Facelets - Compon.
Tuesday, February 23, 2010
Clean Code
Tuesday, February 23, 2010
AJAX
Tuesday, February 23, 2010
<f:ajax event="keyup" execute="@form" render="form:result" />
AJAX
Tuesday, February 23, 2010
<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
jsf.ajax.request(source, event, options)
jsf.ajax.response(request, context)
jsf.ajax.addOnEvent(callback)
jsf.ajax.addOnError(callback)
AJAX
Tuesday, February 23, 2010
Resources
Tuesday, February 23, 2010
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
[localePrefix/][libraryName/][libraryVersion/]resourceName[/resourceVersion]
/META-INF/resources/compLib/script/compScript.js
/resources/compLib/1.1/script/compScript.js
Tuesday, February 23, 2010
Bookable Pages
Tuesday, February 23, 2010
<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
<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
Scopes
Tuesday, February 23, 2010
Application Session Request View Flash Custom None
Scopes
Tuesday, February 23, 2010
Flows/Conversation
Tuesday, February 23, 2010
<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
Flows - ploinFaces
<flow id="useradministrationFlow"> <views> <view>/page/useradmin.*</view> </views> <attributes> <attribute>useradminBean</attribute> <attribute>secureBean</attribute> </attributes> </flow>
Tuesday, February 23, 2010
<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
Clean Code
Tuesday, February 23, 2010
DEMO
Tuesday, February 23, 2010
? ? ?
Tuesday, February 23, 2010