Your SlideShare is downloading. ×
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] </li></ul></ul><ul><ul><l...
MyFaces 2.0 <ul><li>aktueller Stand der Entwicklung </li></ul><ul><ul><li>BETA release... </li></ul></ul><ul><li>Wer arbei...
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>< ms:someComponent ... >  </li></ul><ul><li>< f:convertNumber  for= &quo...
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...
Behavior API <ul><li><f:ajax> ist ein Behavior... </li></ul><ul><ul><li>ClientBehavior / ClientBehaviorHolder * </li></ul>...
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...
JSR 299 und 330 <ul><li>Kids!  Do  not  use @ManagedBean *  at home! </li></ul><ul><li>JSR 330    @Named </li></ul><ul><u...
JSR 330 – Quick introduction <ul><li>@Inject  private  Service   normalCustomers ; </li></ul><ul><li>@Inject @FancyCustome...
JSR 299 – Quick introduction <ul><li>Producer Methods: </li></ul><ul><ul><li>Integration von legacy/3rd party code </li></...
Demo und Vortrag <ul><li>Apache Software Foundation: </li></ul><ul><ul><li>http://myfaces.apache.org </li></ul></ul><ul><u...
Kontakt <ul><li>Bernd Bohmann: </li></ul><ul><ul><li>http://www.irian.eu </li></ul></ul><ul><ul><li>bernd.bohmann AT googl...
Upcoming SlideShare
Loading in...5
×

JSF2

4,837

Published on

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

No Downloads
Views
Total Views
4,837
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "JSF2"

  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. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  5. 6. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  6. 7. Einführung <ul><li>echter Standard (JCP)‏ </li></ul><ul><ul><li>JSR 314 JSF 2.0 [  Java EE 6] </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. 8. MyFaces 2.0 <ul><li>aktueller Stand der Entwicklung </li></ul><ul><ul><li>BETA release... </li></ul></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><ul><li> Apache MyFaces Trinidad 2.0.0-alpha </li></ul>
  8. 9. 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. 10. 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. 11. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  11. 12. JavaServer Pages
  12. 13. 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. 14. 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. 15. 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 MS&quot; /> </li></ul><ul><li>< ui:define name= &quot;body&quot; > </li></ul><ul><li>JavaServer Faces Vortrag am 27.01.2010 </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. 16. 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. 17. Nutzung der Komponente <ul><li>< html xmlns= &quot;http://www.w3.org/1999/xhtml&quot; </li></ul><ul><li>... </li></ul><ul><li>xmlns:ms= &quot;http://java.sun.com/jsf/composite/ms&quot; > * </li></ul><ul><li>< body > </li></ul><ul><li>... </li></ul><ul><li>< ms:comp answer= &quot;42&quot; /> </li></ul><ul><li>... </li></ul><ul><li></ body > </li></ul><ul><li></ html > </li></ul>
  17. 18. 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. 19. Nutzung Komponente <ul><li>... </li></ul><ul><li>< ms: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></ ms:someComponent > </li></ul><ul><li>... </li></ul>
  19. 20. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  20. 21. 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. 22. 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. 23. 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. 24. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  24. 25. 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. 26. 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. 27. 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. 28. 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. 29. Behavior API <ul><li><f:ajax> ist ein Behavior... </li></ul><ul><ul><li>ClientBehavior / ClientBehaviorHolder * </li></ul></ul><ul><li>Idee von converter/validator („attached object“) </li></ul><ul><li>„ injecting JavaScript“ : </li></ul><ul><li>< h:commandButton ...> </li></ul><ul><li>< foo:confirm /> </li></ul><ul><li></ h:commandButton > </li></ul><ul><li>... es geht auch mehr! </li></ul>
  29. 30. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  30. 31. 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>
  31. 32. 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>
  32. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  33. 34. 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
  34. 35. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  35. 36. 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>
  36. 37. 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>
  37. 38. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  38. 39. 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>
  39. 40. weniger ist mehr ... <ul><li>@ManagedBean ( name = &quot;jug&quot; ) ‏ </li></ul><ul><li>@SessionScoped </li></ul><ul><li>public class JugBean ... </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>
  40. 41. 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>
  41. 42. 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 und Behavior </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>JSR 299 (und 330) </li></ul>
  42. 43. JSR 299 und 330 <ul><li>Kids! Do not use @ManagedBean * at home! </li></ul><ul><li>JSR 330  @Named </li></ul><ul><ul><li>Dependency Injection for Java </li></ul></ul><ul><li>JSR 299  @RequestScoped </li></ul><ul><ul><li>CDI: Contexts and Dependency Injection for the Java EE platform </li></ul></ul>
  43. 44. JSR 330 – Quick introduction <ul><li>@Inject private Service normalCustomers ; </li></ul><ul><li>@Inject @FancyCustomer private Service keyCustomers ; </li></ul><ul><li>Eine Implementierung  default (in 299) </li></ul><ul><li>Mehrere  javax.inject.Qualifier </li></ul><ul><li>330 Support: </li></ul><ul><ul><li>Google Guice (RI) </li></ul></ul><ul><ul><li>Spring </li></ul></ul><ul><ul><li>JSR 299 (Apache, JBoss, Resin) </li></ul></ul>
  44. 45. JSR 299 – Quick introduction <ul><li>Producer Methods: </li></ul><ul><ul><li>Integration von legacy/3rd party code </li></ul></ul><ul><li>@Produces @Named( &quot;meisterschaft2010&quot; ) public java.util.Date getMySpecialDate() {...} </li></ul><ul><li>@Inject private java.util.Data myDate ; </li></ul><ul><li>Intercecptors </li></ul><ul><li>Conversation scope </li></ul><ul><li>more... </li></ul>
  45. 46. Demo und Vortrag <ul><li>Apache Software Foundation: </li></ul><ul><ul><li>http://myfaces.apache.org </li></ul></ul><ul><ul><li>http://openwebbeans.apache.org </li></ul></ul><ul><li>Demo: </li></ul><ul><ul><li>https://facesgoodies.googlecode.com/svn/MS/trunk </li></ul></ul><ul><li>Vortrag: </li></ul><ul><ul><li>http://slideshare.net/mwessendorf </li></ul></ul>
  46. 47. Kontakt <ul><li>Bernd Bohmann: </li></ul><ul><ul><li>http://www.irian.eu </li></ul></ul><ul><ul><li>bernd.bohmann AT googlemail DOT com </li></ul></ul><ul><li>Matthias Wessendorf: </li></ul><ul><ul><li>http://matthiaswessendorf.wordpress.com </li></ul></ul><ul><ul><li>matzew AT apache DOT org </li></ul></ul>

×