JavaServer Faces 2.0 Mehr als nur ein Web-Framework Bernd Bohmann – IRIAN Deutschland GmbH Matthias Weßendorf – Oracle
Bernd Bohmann <ul><li>IRIAN Deutschland </li></ul><ul><li>Apache MyFaces </li></ul><ul><li>Tobago </li></ul><ul><li>CORE <...
Matthias Weßendorf <ul><li>Oracle </li></ul><ul><li>Apache Software Foundation </li></ul><ul><li>Autor </li></ul><ul><li>S...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
Einführung <ul><li>echter Standard (JCP)‏ </li></ul><ul><ul><li>JSR 314  JSF 2.0 [Java EE 6]  (2009) * </li></ul></ul><ul>...
MyFaces 2.0 <ul><li>aktueller Stand der Entwicklung </li></ul><ul><li>Wer arbeitet an MyFaces 2.0 </li></ul><ul><li>Arbeit...
Einführung <ul><li>Neues in JSF 2... </li></ul><ul><li>B  I G  items </li></ul><ul><li>small  items... </li></ul>
kleinere Verbesserungen <ul><li>neue Methoden External/FacesContext </li></ul><ul><li>EditableValueHolder.resetValue(); </...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
JavaServer Pages
Facelets <ul><li>War: Alternative zu JSP </li></ul><ul><li>Ist: Nachfolger von JSP </li></ul><ul><ul><li>JSP ist „old scho...
Facelets Template <ul><li>< html   xmlns= &quot;http://www.w3.org/1999/xhtml&quot; </li></ul><ul><li>... </li></ul><ul><li...
Facelets Template Client <ul><li>< html  ...> </li></ul><ul><li>< h:body > </li></ul><ul><li>< div >Wird nicht angezeigt</...
Einfache JSF Komponenten <ul><li>< html  ... > </li></ul><ul><li>< head /> </li></ul><ul><li>< body > </li></ul><ul><li>< ...
Nutzung der Komponente <ul><li>< html   xmlns= &quot;http://www.w3.org/1999/xhtml&quot; </li></ul><ul><li>... </li></ul><u...
Noch ne Komponente... <ul><li>... </li></ul><ul><li>< composite:interface >  </li></ul><ul><li>< composite:actionSource  n...
Nutzung Komponente <ul><li>...  </li></ul><ul><li>< cgn:someComponent ... >  </li></ul><ul><li>< f:convertNumber  for= &qu...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
View Parameter <ul><li><f:metadata> und <f:viewParam> </li></ul><ul><li>Mapping: request param -> „special“ comp. </li></u...
View Parameter <ul><li>Seite 1 </li></ul><ul><li><f :metadata > </li></ul><ul><li>< f:viewParam   id= &quot; id &quot;  na...
View Parameter <ul><li>Seite 2 </li></ul><ul><li>< f:metadata> </li></ul><ul><li>< f:viewParam  id= &quot;id&quot;  name= ...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
Ajax <ul><li>JSF 2.0 ohne Ajax? Geht nicht! </li></ul><ul><li>Ajax in den Komponenten? Nein </li></ul><ul><li>Ajax „API“ i...
Ajax – f:ajax <ul><li>< h:inputText  type= &quot;#{bean.value}&quot; ...> </li></ul><ul><li>< f:ajax   event= &quot; keyup...
Ajax – f:ajax <ul><li>... </li></ul><ul><li>< h:form  id= &quot;form1&quot; > </li></ul><ul><li>< h:commandButton  ...> </...
Ajax - JavaScript <ul><li>Nutzung der JavaScript API </li></ul><ul><li>< h:commandButton   </li></ul><ul><li>id= &quot;aja...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
Resources <ul><li>Laden der Resources: </li></ul><ul><li>Kein extra Filter/Servlet/PhaseListener </li></ul><ul><ul><li>Kla...
Beispiel - Resources <ul><li>< html   xmlns= &quot; http://www.w3.org/1999/xhtml &quot;  ... > </li></ul><ul><li>< h:head/...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
Partial State Saving <ul><li>< html  ...  </li></ul><ul><li>< h:head/ > </li></ul><ul><li>< h:body > </li></ul><ul><li>< h...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
Expression Language <ul><li>JSR 245 JSP 2.1 Maintenance Review 2 </li></ul><ul><li>Parameterunterstützung bei Methoden (EE...
Neue Scopes <ul><li>Flash Scope </li></ul><ul><ul><li>Lebensdauer bis zum naechsten Request </li></ul></ul><ul><ul><li>EL:...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
weniger ist mehr ... <ul><li>Annotationen für Managed Beans </li></ul><ul><ul><li>(Faces Managed Bean Annotation Specifica...
weniger ist mehr ... <ul><li>@ManagedBean ( name =  &quot;jug&quot; )‏ </li></ul><ul><li>@SessionScoped </li></ul><ul><li>...
weniger ist mehr ... <ul><li>< h:link  outcome= &quot;start&quot; > </li></ul><ul><li>Zur Homepage...   </li></ul><ul><li>...
Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pa...
JSF goodies <ul><li>JSR 299 </li></ul><ul><ul><li>J ava  C ontexts and  D ependency  I njection (aka WebBeans)‏ </li></ul>...
Apache Open Web Beans <ul><li>Conversation Scope </li></ul><ul><li>Seam </li></ul><ul><li>JSR 299 vs JSR 330 </li></ul><ul...
JSF auf dem iPhone <ul><li>Navigation Bar: </li></ul><ul><li><tr:panelHeader  text = &quot; Details &quot;   styleClass = ...
JSF auf dem iPhone <ul><li>Field Set Panel: </li></ul>
JSF auf dem iPhone <ul><li>Navigation Panel List: </li></ul>
Comet mit JSF <ul><li>ADF Faces RichClient Demo </li></ul>
JSF und REST <ul><li>Bookmarks ... (schon gesehen)‏ </li></ul><ul><li>REST != Bookmarks </li></ul><ul><li>Für den ganzen R...
Demo und Vortrag <ul><li>Demo: </li></ul><ul><ul><li>https://facesgoodies.googlecode.com/svn/CGN/trunk </li></ul></ul><ul>...
Upcoming SlideShare
Loading in...5
×

JavaServer Faces 2.0 - Ein Framework und mehr

3,507

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,507
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

JavaServer Faces 2.0 - Ein Framework und mehr

  1. 1. JavaServer Faces 2.0 Mehr als nur ein Web-Framework Bernd Bohmann – IRIAN Deutschland GmbH Matthias Weßendorf – Oracle
  2. 2. Bernd Bohmann <ul><li>IRIAN Deutschland </li></ul><ul><li>Apache MyFaces </li></ul><ul><li>Tobago </li></ul><ul><li>CORE </li></ul>
  3. 3. Matthias Weßendorf <ul><li>Oracle </li></ul><ul><li>Apache Software Foundation </li></ul><ul><li>Autor </li></ul><ul><li>Speaker auf internat. Konferenzen </li></ul>
  4. 4. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  5. 5. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  6. 6. Einführung <ul><li>echter Standard (JCP)‏ </li></ul><ul><ul><li>JSR 314 JSF 2.0 [Java EE 6] (2009) * </li></ul></ul><ul><ul><li>leichtgewichtiges / erweiterbares Framework </li></ul></ul><ul><ul><li>API für UI Komponenten </li></ul></ul><ul><li>starkes Tooling </li></ul><ul><li>verschiedene Implementierungen </li></ul><ul><li>bunte „user community“ </li></ul><ul><ul><li>Not only Apache ! </li></ul></ul>
  7. 7. MyFaces 2.0 <ul><li>aktueller Stand der Entwicklung </li></ul><ul><li>Wer arbeitet an MyFaces 2.0 </li></ul><ul><li>Arbeiten mit einer Spezifikation </li></ul><ul><li>Java “Community“ Process </li></ul>
  8. 8. Einführung <ul><li>Neues in JSF 2... </li></ul><ul><li>B I G items </li></ul><ul><li>small items... </li></ul>
  9. 9. kleinere Verbesserungen <ul><li>neue Methoden External/FacesContext </li></ul><ul><li>EditableValueHolder.resetValue(); </li></ul><ul><li>System-Events </li></ul><ul><li>TreeTraversal </li></ul><ul><li>ExceptionHandling </li></ul><ul><li>ProjectStage </li></ul><ul><li>... </li></ul>
  10. 10. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  11. 11. JavaServer Pages
  12. 12. Facelets <ul><li>War: Alternative zu JSP </li></ul><ul><li>Ist: Nachfolger von JSP </li></ul><ul><ul><li>JSP ist „old school“ </li></ul></ul><ul><li>Templating </li></ul><ul><li>Einfache Komponentenentwicklung </li></ul><ul><li>Der neue Freund des Web-Designers </li></ul>
  13. 13. Facelets Template <ul><li>< html xmlns= &quot;http://www.w3.org/1999/xhtml&quot; </li></ul><ul><li>... </li></ul><ul><li>xmlns:ui= &quot;http://java.sun.com/jsf/facelets&quot; > </li></ul><ul><li>< h:head >${header}< /h:head > </li></ul><ul><li>< h:body > </li></ul><ul><li>... </li></ul><ul><li>< div class= &quot; bodyStyle&quot; > </li></ul><ul><li>< ui:insert name= &quot; body&quot; >0815 text...</ ui:insert > </li></ul><ul><li></ div > </li></ul><ul><li>... </li></ul><ul><li></ h:body > </li></ul><ul><li></ html > </li></ul>
  14. 14. Facelets Template Client <ul><li>< html ...> </li></ul><ul><li>< h:body > </li></ul><ul><li>< div >Wird nicht angezeigt</ div > </li></ul><ul><li>< ui:composition template= &quot;master-template.xhtml&quot; > </li></ul><ul><li>< ui:param name= &quot;header&quot; value= &quot;JUG Cologne&quot; /> </li></ul><ul><li>< ui:define name= &quot;body&quot; > </li></ul><ul><li>JavaServer Faces Vortrag am 29.05.2009 </li></ul><ul><li></ ui:define > </li></ul><ul><li></ ui:composition > </li></ul><ul><li></ h:body > </li></ul><ul><li></ html > </li></ul>
  15. 15. Einfache JSF Komponenten <ul><li>< html ... > </li></ul><ul><li>< head /> </li></ul><ul><li>< body > </li></ul><ul><li>< composite:interface > </li></ul><ul><li>< composite:attribute name= &quot; intValue &quot; </li></ul><ul><li>required= &quot;true&quot; type= &quot;java.lang.Integer&quot; /> </li></ul><ul><li></ composite:interface > </li></ul><ul><li>< composite:implementation > </li></ul><ul><li><!–- (X)HTML und/oder andere JSF Komponenten --> </li></ul><ul><li>< h:inputText ... value= &quot;#{cc.attrs. intValue }&quot; /> </li></ul><ul><li></ composite:implementation > </li></ul><ul><li></ body > </li></ul><ul><li></ html > </li></ul>
  16. 16. Nutzung der Komponente <ul><li>< html xmlns= &quot;http://www.w3.org/1999/xhtml&quot; </li></ul><ul><li>... </li></ul><ul><li>xmlns:cgn= &quot;http://jugcologne.org/jsf&quot; > </li></ul><ul><li>< body > </li></ul><ul><li>... </li></ul><ul><li>< cgn:comp intValue= &quot;42&quot; /> </li></ul><ul><li>... </li></ul><ul><li></ body > </li></ul><ul><li></ html > </li></ul>
  17. 17. Noch ne Komponente... <ul><li>... </li></ul><ul><li>< composite:interface > </li></ul><ul><li>< composite:actionSource name= &quot;guess&quot; /> </li></ul><ul><li>< composite:valueHolder name= &quot;guessValue&quot; /> </li></ul><ul><li></ composite:interface > </li></ul><ul><li>< composite:implementation > </li></ul><ul><li>< h:commandButton id= &quot; guess &quot; ... /> </li></ul><ul><li>< h:inputText id= &quot; guessValue &quot; /> </li></ul><ul><li></ composite:implementation > </li></ul><ul><li>... </li></ul>
  18. 18. Nutzung Komponente <ul><li>... </li></ul><ul><li>< cgn:someComponent ... > </li></ul><ul><li>< f:convertNumber for= &quot;guessValue&quot; ... /> </li></ul><ul><li>< f:actionListener for= &quot;guess&quot; binding= &quot;#{bean.someActionListener}&quot; /> </li></ul><ul><li></ cgn:someComponent > </li></ul><ul><li>... </li></ul>
  19. 19. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  20. 20. View Parameter <ul><li><f:metadata> und <f:viewParam> </li></ul><ul><li>Mapping: request param -> „special“ comp. </li></ul><ul><li>Master / Detail - Views </li></ul><ul><li>Basis für Bookmarks (bei den Seiten) </li></ul><ul><ul><li>POST ist nicht mehr alleine... </li></ul></ul><ul><li>UIViewParam ist UIInput * </li></ul>
  21. 21. View Parameter <ul><li>Seite 1 </li></ul><ul><li><f :metadata > </li></ul><ul><li>< f:viewParam id= &quot; id &quot; name= &quot; playerId &quot; > </li></ul><ul><li></f :metadata > </li></ul><ul><li>.... </li></ul><ul><li>< h:link ...> </li></ul><ul><li>< f:param name= &quot;playerId&quot; value= &quot;#{value}&quot; / > </li></ul><ul><li>#{text} </li></ul><ul><li></ h:link > </li></ul>
  22. 22. View Parameter <ul><li>Seite 2 </li></ul><ul><li>< f:metadata> </li></ul><ul><li>< f:viewParam id= &quot;id&quot; name= &quot; playerId &quot; value= &quot;#{value}&quot; / > </li></ul><ul><li>< f:event type= &quot;preRenderView&quot; listener= &quot; #{code} &quot;/ > </li></ul><ul><li></ f:metadata > </li></ul><ul><li>.... </li></ul><ul><li>< h:outputText value= &quot;#{details}&quot; / > </li></ul><ul><li>.... </li></ul>
  23. 23. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  24. 24. Ajax <ul><li>JSF 2.0 ohne Ajax? Geht nicht! </li></ul><ul><li>Ajax in den Komponenten? Nein </li></ul><ul><li>Ajax „API“ in JSF 2.0 </li></ul><ul><ul><li>JavaScript </li></ul></ul><ul><ul><li>deklarativ </li></ul></ul><ul><li>Spezifikation: </li></ul><ul><ul><li>JavaScript API </li></ul></ul><ul><ul><li>(XML) Ajax Response </li></ul></ul>
  25. 25. Ajax – f:ajax <ul><li>< h:inputText type= &quot;#{bean.value}&quot; ...> </li></ul><ul><li>< f:ajax event= &quot; keyup &quot; render= &quot; someID &quot; > nicht onkeyup </li></ul><ul><li></ h:inputText > </li></ul><ul><li>< h:commandButton ...> </li></ul><ul><li>< f:ajax onevent= &quot; jsCallback &quot; render= &quot; @form &quot; > </li></ul><ul><li></ h:commandButton > </li></ul><ul><li>jsCallback = function(data)‏ </li></ul><ul><li>{ </li></ul><ul><li>// data.type == &quot;event&quot; </li></ul><ul><li>// data.name == eventName (begin, success, complete)‏ </li></ul><ul><li>} </li></ul>
  26. 26. Ajax – f:ajax <ul><li>... </li></ul><ul><li>< h:form id= &quot;form1&quot; > </li></ul><ul><li>< h:commandButton ...> </li></ul><ul><li>< f:ajax render= &quot; :form2:out &quot; > <!–- “:out“ --> </li></ul><ul><li></ h:commandButton > </li></ul><ul><li></ h:form > </li></ul><ul><li>< h:form id= &quot; form2 &quot; > </li></ul><ul><li>< h:outputText id= &quot; out &quot; > </li></ul><ul><li></ h:form > </li></ul><ul><li>< h:outputText id= &quot;out&quot; > </li></ul><ul><li>... </li></ul>
  27. 27. Ajax - JavaScript <ul><li>Nutzung der JavaScript API </li></ul><ul><li>< h:commandButton </li></ul><ul><li>id= &quot;ajax5&quot; value= &quot;button&quot; </li></ul><ul><li>onclick= &quot; jsf.ajax.request (this, event, </li></ul><ul><li>{ execute : 'someId', render :'xId'}); return false;&quot; </li></ul><ul><li>/> </li></ul><ul><li>weitere Funktionen </li></ul><ul><li>jsf.ajax.addOnEvent(callback); </li></ul>
  28. 28. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  29. 29. Resources <ul><li>Laden der Resources: </li></ul><ul><li>Kein extra Filter/Servlet/PhaseListener </li></ul><ul><ul><li>Klassenpfad: </li></ul></ul><ul><ul><ul><li>blah.jar:/META-INF/resources </li></ul></ul></ul><ul><ul><li>Dateisystem: </li></ul></ul><ul><ul><ul><li><ROOT>/resources </li></ul></ul></ul><ul><li>I18N </li></ul><ul><li>Versionierung </li></ul>
  30. 30. Beispiel - Resources <ul><li>< html xmlns= &quot; http://www.w3.org/1999/xhtml &quot; ... > </li></ul><ul><li>< h:head/ > </li></ul><ul><li>< h:body > </li></ul><ul><li>< h:form > </li></ul><ul><li>... </li></ul><ul><li>< h:outputStylesheet name= &quot;jug/jug.css&quot; /> </li></ul><ul><li>< h:outputScript name= &quot;jsf.js&quot; </li></ul><ul><li>library= &quot;javax.faces&quot; target= &quot;head&quot; /> </li></ul><ul><li>< h:graphicImage value= &quot;#{resource['lib:jug.jpg']}&quot; /> </li></ul><ul><li>... </li></ul><ul><li>< h:form > </li></ul><ul><li></ h:body > </li></ul><ul><li></ html > </li></ul>
  31. 31. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  32. 32. Partial State Saving <ul><li>< html ... </li></ul><ul><li>< h:head/ > </li></ul><ul><li>< h:body > </li></ul><ul><li>< h:form > </li></ul><ul><li>< h:inputText </li></ul><ul><li>value= &quot;#{value}&quot; /> </li></ul><ul><li>< h:commandButton </li></ul><ul><li>value= &quot;Send&quot; /> </li></ul><ul><li></ h:form > </li></ul><ul><li></ h:body > </li></ul><ul><li></ html > </li></ul>UIViewRoot UIBody UIHead UICommand UIForm UIInput
  33. 33. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  34. 34. Expression Language <ul><li>JSR 245 JSP 2.1 Maintenance Review 2 </li></ul><ul><li>Parameterunterstützung bei Methoden (EE6) </li></ul><ul><li>ActionEvent optional </li></ul><ul><li>component, resource, viewScope, compositeComponent (cc)‏ </li></ul>
  35. 35. Neue Scopes <ul><li>Flash Scope </li></ul><ul><ul><li>Lebensdauer bis zum naechsten Request </li></ul></ul><ul><ul><li>EL: #{flash.attrName}, #{flash.now} </li></ul></ul><ul><ul><li>Ruby on Rails </li></ul></ul><ul><li>View Scope </li></ul><ul><ul><li>solange die View verwendet wird </li></ul></ul><ul><ul><li>EL: #{viewScope.attrName} </li></ul></ul><ul><ul><li>Managed Beans </li></ul></ul>
  36. 36. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  37. 37. weniger ist mehr ... <ul><li>Annotationen für Managed Beans </li></ul><ul><ul><li>(Faces Managed Bean Annotation Specification (2.0))‏ </li></ul></ul><ul><ul><li>javax.faces.bean.* </li></ul></ul><ul><ul><li>optionaler Bestandteil (neuer JSR)‏ </li></ul></ul><ul><li>einfachere Navigation (ohne XML)‏ </li></ul><ul><ul><li>< h:command(Button|Link) /> </li></ul></ul><ul><ul><li>Neu: < h:button /> und < h:link /> (  Bookmark)‏ </li></ul></ul><ul><li>weitere @nnotations für weniger XML config: </li></ul><ul><ul><li>@FacesComponent , @FacesValidator , @FacesConverter </li></ul></ul>
  38. 38. weniger ist mehr ... <ul><li>@ManagedBean ( name = &quot;jug&quot; )‏ </li></ul><ul><li>@SessionScoped </li></ul><ul><li>public class JugCologneBean ... </li></ul><ul><li>{ </li></ul><ul><li>@ManagedProperty ( name = &quot;event&quot; , value = &quot;JSF 2.0&quot; )‏ </li></ul><ul><li>private String event ; </li></ul><ul><li>//getter/setter </li></ul><ul><li>} </li></ul>
  39. 39. weniger ist mehr ... <ul><li>< h:link outcome= &quot;start&quot; > </li></ul><ul><li>Zur Homepage... </li></ul><ul><li></ h:link > </li></ul><ul><li>< h:commandButton </li></ul><ul><li>id= &quot;button&quot; </li></ul><ul><li>value= &quot;Anmelden&quot; </li></ul><ul><li>action= &quot;/someDir/anmelden&quot; </li></ul><ul><li>/> </li></ul>
  40. 40. Agenda <ul><li>Einführung </li></ul><ul><li>Facelets – DER neue View-Layer </li></ul><ul><li>View Params – Bookmarkable Pages </li></ul><ul><li>Ajax </li></ul><ul><li>Resources </li></ul><ul><li>Partial State Saving </li></ul><ul><li>EL und neue Scopes </li></ul><ul><li>@nnotations – XML free JSF </li></ul><ul><li>JSF goodies </li></ul>
  41. 41. JSF goodies <ul><li>JSR 299 </li></ul><ul><ul><li>J ava C ontexts and D ependency I njection (aka WebBeans)‏ </li></ul></ul><ul><ul><li>Apache OpenWebBeans </li></ul></ul><ul><li>MyFaces extVal (JSR 303 – Bean Validation)‏ </li></ul><ul><li>JSF auf dem iPhone </li></ul><ul><li>Comet mit JSF </li></ul><ul><li>Groovy * </li></ul><ul><li>REST </li></ul>
  42. 42. Apache Open Web Beans <ul><li>Conversation Scope </li></ul><ul><li>Seam </li></ul><ul><li>JSR 299 vs JSR 330 </li></ul><ul><li>Apache Incubator 2008 </li></ul>
  43. 43. JSF auf dem iPhone <ul><li>Navigation Bar: </li></ul><ul><li><tr:panelHeader text = &quot; Details &quot; styleClass = &quot; toolbar &quot; > </li></ul><ul><li><tr:commandLink text = &quot; Intro &quot; styleClass = &quot; backButton &quot; action = &quot; backtoIntro &quot; /> </li></ul><ul><li><tr:commandLink text = &quot; Agent &quot; styleClass = &quot; button &quot; action = &quot; toAgent &quot; /> </li></ul><ul><li></tr:panelHeader> </li></ul>
  44. 44. JSF auf dem iPhone <ul><li>Field Set Panel: </li></ul>
  45. 45. JSF auf dem iPhone <ul><li>Navigation Panel List: </li></ul>
  46. 46. Comet mit JSF <ul><li>ADF Faces RichClient Demo </li></ul>
  47. 47. JSF und REST <ul><li>Bookmarks ... (schon gesehen)‏ </li></ul><ul><li>REST != Bookmarks </li></ul><ul><li>Für den ganzen Rest.. </li></ul><ul><ul><li>JSR 311 </li></ul></ul><ul><ul><li>Warum ein neues Framework dafür erfinden ... </li></ul></ul>
  48. 48. Demo und Vortrag <ul><li>Demo: </li></ul><ul><ul><li>https://facesgoodies.googlecode.com/svn/CGN/trunk </li></ul></ul><ul><li>Vortrag: </li></ul><ul><ul><li>http://slideshare.net/mwessendorf </li></ul></ul>

×