Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt ...

30
26.07.2013 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: Über den Tellerrand Überblick JSF-Bibliotheken und Tools für den praktischen Einsatz 1.0 JSF-Bibliotheken und Tools für den praktischen Einsatz © 2013 Orientation in Objects GmbH Ihr Sprecher 2 Thomas Asel Trainer, Berater, Entwickler Schwerpunkte Frontend-Architektur, Entwicklung von Web-Anwendungen, Web-Performance-Optimierung @Tom_Asel http://blog.oio.de [email protected]

Transcript of Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt ...

Page 1: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]:

Über den Tellerrand

Überblick JSF-Bibliotheken und Tools für den praktischen Einsatz

1.0

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Ihr Sprecher

2

Thomas Asel

Trainer, Berater, Entwickler

SchwerpunkteFrontend-Architektur,

Entwicklung von Web-Anwendungen, Web-Performance-Optimierung

@Tom_Aselhttp://blog.oio.de

[email protected]

Page 2: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

2

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Luxusprobleme: Die Qual der Wahl

3

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Luxusprobleme: Die Qual der Wahl

4

Page 3: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

3

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Luxusprobleme: Die Qual der Wahl

5

• CODI• ExtVal• Test• Commons

• CDK• JSFUnit• Richfaces Tools (Eclipse)

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Luxusprobleme: Die Qual der Wahl

6

Page 4: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

4

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

tl;dr

Wir finden wir heraus, was zu uns passt?

7

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

OmniFaces

• "Apache Commons für JSF":

• Kaum UI-Komponenten

• Focus: – Produktivität

• Standard-Implementierungen für häufige Anwendungsfä lle• Schließt Lücke zur nächsten JSF Spezifikation (JSF 2.2)

– z.B.: HTML5-Attribute

– Performance• Einfache Komponenten zur Verbesserung des Laufzeitv erhaltens von

JSF-Anwendungen

8

Page 5: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

5

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

OmniFaces - Performance

• o:cache– Caching von gerendertem Markup

• GzipResponseFilter– Kompression von textbasierten Resourcen– GZIP spart ca. 70 % der Bandbreite (falls der Client es versteht)

• CombinedResourceHandler– Packt JS und CSS in jeweils eine Datei pro Seite→ Reduziert # Reuests / Seite→ Caching-Konzept entwickeln!

• CDNResourceHandler– auslagern statischer Ressourcen auf externe Knoten→ Verringert Netzwerklast, entlastet Application-Server

9

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

• Annotation-basiertes URL-Rewriting für JSF– Filter-basiert– Mapping von Pretty-URLs auf (dynamische) ViewId

• RESTFul Applications

• SEO– http://www.oio.de/faces/welcome.jsf?foo=bar ->

http://www.oio.de/welcome/foo/bar

• Fazit– JSF 2.0 addressiert bereits einige Features– JSF 2.2 wird noch mehr davon bieten– PrettyFaces ermöglicht aber feingranularere Steuerung

10

Page 6: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

6

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Richfaces CDK

• Problem: Entwicklung von Non-Composit-Components aufwändig– Renderer– Komponentenklasse– Tag– Taghandler– Ajax-Behaviour– Testing

• Component Development Kit– Abstrakte Klassen mit Annotationen versehen

• Templating Facility– Rendering-Code deklarativ entwickeln– analog Composite Components

11

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

JSF-Unit

• Wie testet man (Non-UI-)JSF-Komponenten, die Laufzeitabhängigkeiten haben?– Valiadator#validate(FacesContext context, UIComponent

component, Object value)

• JSF-Unit– In-Container Test– Server- und ClientSession

@Test @InitialPage("/index.faces")

public void testInitialPage(JSFServerSession server,

SFClientSession client) throws IOException {

Assert.assertEquals("/index.xhtml", server.getCurrentViewID());

client.setValue("name", "OiO");

client.click("submit_button");

UIComponent greeting = server.findComponent("greeting");

Assert.assertTrue(greeting.isRendered());

}

12

Page 7: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

7

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

MyFaces - Umfeld

− Orchestra

− CODI

− ExtVal

− Test

− Commons

13

• Unterprojekte zu JSF 1.x Zeiten entstanden

• Teilweise mit JSF 2.0 in den Standard aufgenommen

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Test

• Problemstellung:– Test von (Non-UI) JSF- Komponenten mit Laufzeitabhängigkeiten

• Beispiel: Valiadator#validate(FacesContext context, UIComponent component, java.lang.Object value)

– Unit-Testing ?

• Features– Mock-Objekte

• JSF-API• Servlet API

– Basisklassen für Unit-Tests

14

Page 8: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

8

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Apache DeltaSpike

• Noch im Apache Incubator

• Sammlung mehrer Portable CDI Extensions

• Module:– Core– Security– JPA– Container– JSF (Nachfolger von MyFaces CODI)

15

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Apache DeltaSpike JSF-Module

• Typesafety– Navigation

• Statt <naviagation-case>• Refactoring von Navigationspfaden

– Messages� Keine Typos� Bessere IDE-Unterstützung

• Scopes– WindowScoped– ViewScoped (saubere CDI Integration!)– ViewAccessScoped

• RenderScoped

• Events– Before/AfterJSFRequest– Before/AfterPhase

16

Page 9: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

9

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

JSFInspector

• Keine Klassischen UI-Komponenten

• Unterstützt Developer bei der JSF-Anwendungs-Entwicklung

• inspect:tree– Wieviele Komponenten stecken in meinem Komponentenbaum?– Welche Komponenten wurden wie oft verwendet?

• Inspect:lifecycle– Welche Phase dauert wie lange?– Welche Phasen wurden durchlaufen?– Welche Komponenten weisen Validierungsfehler auf?

• http://tasel.github.io/jsfinspector

17

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH 18

Page 10: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

10

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH 19

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

RichFaces

20

Quelle: http://www.ohloh.net/p/richfaces

Quelle: https://github.com/richfaces

Page 11: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

11

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

RichFaces - Komponentenbibliothek

• ca. 60 UI-Komponenten

• Ajax-Mechanismus war Vorlage für f:ajax in JSF 2.0

• Server-Push– Atmosphere

• Client-Side Validation

• (wenige) Mobil-Komponenten

• Aktuell: RichFaces 4.3.2

21

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

RichFaces - Framework

• Skinning– Feingranulares CSS– .properties Files– Komponentenbasierte *.ecss Dateien– RichFaces 5: Styling basierend auf LESS und Bootstrap

• Framework– Resource Optimization

• Zusammenpacken von JavaScript und CSS in jeweils ei ne Datei– Resource Mapping

• Mapping von Resourcenamen auf alternative Quellen– Ajax-Framework

• Queues• Regions• …

22

Page 12: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

12

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH 23

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH 24

Quelle: http://www.google.de/trends/explore#q=richfaces%2C%20icefaces%2C%20primefaces&cmpt=q

Page 13: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

13

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

• 100+ Komponenten– Ansprechendes UI

• Server-Push– Atmosphere

• Theming– Theme Roller

• Primefaces-Mobile

• Abstrahiert von JS– widgetId

25

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Demnächst…

• Primefaces UI– Reine JavaScript Widgets– Keine JSF-Abhängigkeit– Basierend auf jQuery

• Primefaces .NET– Kein Scherz:

26

Page 14: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

14

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Demnächst…

• Primefaces UI– Reine JavaScript Widgets– Keine JSF-Abhängigkeit– Basierend auf jQuery

• Primefaces .NET– Kein Scherz!

27

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Kritikpunkte

• Geschäftsmodell– (kurzes) Crowdfunding Experiment

• Entwicklung von Features konnten mit Beträgen gespo nsert werden• Offizielle Ankündigungen nachträglich gelöscht :-(

– … aber Google und das Forum vergessen nichts

– Freiwillige Bezahlversion der Doku (kurzzeitig)– Aktuell:

• PrimeFaces Elite (Zugang zu Minor Releases)• PrimeFaces PRO (Support)

• Auseinandersetzung mit ICESoft

– Verunsicherte Nutzer– Was wäre im Falle eines Rechtsstreits passiert?

• Frage: PrimeTechnology in 2 Jahren?

28

Page 15: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

15

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Tipps zur Auswahl von Komponentenbibliotheken

29

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Vorbemerkung zur Auswahl

30

• Festlegung nicht mit der Wahl der Implementierung …

• … sondern der Bibliothek !!!

• Migration von FooFaces auf BarFaces ist aufwändig

• Mischen von Bibliotheken ist immer noch problematisch:– JavaScript kennt keine Namensräume– Jede Bibliothek bringt "ihre" Scripte mit

• mindestens jQuery• Versionierung?

→ Anforderungen an Bibliothek sind in der Frühphase meist nur teilweise bekannt→ Festlegung schon zu Projektstart nicht sinnvoll

Page 16: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

16

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Einflussfaktoren

• Fachliche Anforderungen

• Technische Anforderungen– z.B.: Zielplattformen

• Team– Background– Rollenkonzept– JavaScript – Know-How?

31

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Bibliothek oder DIY?

• Notwendigkeit für Bibliotheken seit JSF 2.0 geringer– ResourceHandling– Ajax– Pretty-Urls / Bookmarkability– Composite Components

• Mit JSF 2.2 gibt’s noch mehr:– Flows– File-Upload

• HTML5 bietet native Komponenten– Datepicker / Calendar– Slider– Spin-Buttons

32

Page 17: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

17

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Auswahlkriterien: Nichtfunktionale Anforderungen

• Was entwickeln wir? Projekt oder Produkt?

• Erweiterbarkeit– Verstehen wir …

• Klassenhierarchie?• Renderer?• Ajax-Handling?• Client-Code (JavaScript)?

– Komponentenmodell• Wie nutzen wir die Features in (Komposit-) Komponen ten?

• Wartbarkeit– Könnten wir einen kritischen Fehler selbst beheben?– Releasezyklen?– Community?– Support?

33

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Auswahlkriterien: Einflüsse auf Entwicklungsmodell

• Primefaces kapselt JS sehr gut– Im Idealfall gar keine Berührungspunkte mit JS– Dafür wird es kompliziert, wenn man mal dran muss

• RichFaces bezüglich JS offener– Eingriff bei Bedarf leichter

• ICEFaces– D2D Rendering– ACE-Komponenten kapseln PrimeFaces

34

Page 18: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

18

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Anforderung:"… und natürlich auch auf mobilen Endgeräten!"

35

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Brauchen wir eine Mobile-JSF-Bibliothek?

• Problem: Wir sind Java-Entwickler

• In Java haben wir Werkzeuge und Prozesse die für UNS funktionieren …

• … aber wir haben keine Erfahrung mit

oder

36

Page 19: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

19

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Lösung:Alle (größeren) JSF-Bibliotheken bieten auch eine Mobile-Bibliothek

richtig?37

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH 38

Quellen: http://mobileshowcase.icesoft.org/mobileshowcase/showcase.jsf http://www.primefaces.org/showcase-labs/mobile/chat.jsf

Page 20: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

20

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Gerätelandschaft bis vor ca. 2 Jahren:

39

Quelle: http://assets.sbnation.com/assets/1265151/ios_family.jpeg

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Gerätelandschaft heute:

40

Page 21: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

21

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Optimierung für n-Ausgabekanäle

• n > = 3 !– (Desktop)-Browser– Android– iOs– Firefox OS– Ubuntu Phone– Windows Phone

• Tablet != Smartphone– Weitere Unterscheidung

• Nach Geräteklassen• Nach Auflösung• Abmessung• Seitenverhältnis

41

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Mobile Optimization done wrong

42

Page 22: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

22

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Mobile Optimization done wrong

43

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Mobile Optimization done right

• Geräteunabhängiges Look & Feel implementieren– Klassisches Web-Design– HTML5 / CSS3– Stichwort: Responsive Design

• Zielplattform Tablet:– Viel Platz– moderne Browser (Desktop-ähnlich)

• Warum also nicht (normale) Webanwendung auch für Mobile Geräte?– Webdesign statt Apple/Android-Look & Feel

44

Page 23: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

23

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Fazit Mobile-Bibliotheken

• Anforderung: "… und natürlich auch auf mobilen Endgeräten!"

• Was heisst das konkret?– Smartphone– Tablet– Beides?– … ?

• Was darf es denn sein?– Echte Web-Anwendung– Gefakte Native-App

45

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Unser JSF-Werkzeugkasten

� Erkennen des User-Agent und austauschen von– Templates

• Fusszeile, Naviagtion, etc. etwas spartanischer• CSS• JavaScripte

� Renderer und Renderkits– Tipp: Tabellarische Daten lassen sich auch als Listen darstellen …

� Das V in MVC– speziellen View für Mobile-Agents– Model und Controller bleiben gleich

→ Mobile Bibliotheken bieten einen Mehrwert, wenn– anderes Bedienkonzept implementiert werden soll

• Touch / Gesten-Steuerung

46

Page 24: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

24

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Fazit

• JSF – Ökosystem bietet mehr als nur Komponentenbibliotheken

• Optik ist kein ausreichendes Auswahlkriterium für Komponentenbibliotheken

• Es geht auch ganz ohne Komponentenbibliothek

• Team – Know-How sollte hohes Gewicht bei Bewertung haben– Besonders hinsichtlich Client-Technologien

• Optimierung für Mobile– Kann aufwändig sein – Auch ohne dedizierte Mobile-Bibliothek möglich

47

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

??

? ?

????

Fragen ?

48

Page 25: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

25

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Links

• [21] https://github.com/richfaceshttp://www.ohloh.net/p/richfaces

• [25] http://www.google.de/trends/explore#q=richfaces%2C%20icefaces%2C%20primefaces&cmpt=q

• [26] http://www.primefaces.org/showcase-labs/ui/macosx.jsf

• [29] http://blog.primefaces.org/?p=2160

• [39] http://mobileshowcase.icesoft.org/mobileshowcase/showcase.jsf http://www.primefaces.org/showcase-labs/mobile/chat.jsf

• [40] http://assets.sbnation.com/assets/1265151/ios_family.jpeg

• [41] http://tabletcommunity.de/20010/video-fast-alle-tablets-der-vergangenen-jahre-in-16-minuten-vorgestellt/

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für ihre Aufmerksamkeit !

Page 26: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

26

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Das haben wir gekauft

• Komponentenbasierte Entwicklung

• Gute Wiederverwendbarkeit

• Deklarative View-Beschreibung

• Gewollter Technologiebruch:– Java– XHTML / JS /CSS

• So nah an Zieltechnologien wie nötig

• So Abstrakt wie möglich

51

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

OmniFaces - Komponenten

• o:tree

• o:highlight– Hervorhebung invalider

Eingabefelder

• o:onloadScript– Führt Script bei jedem

Laden/Reload aus, auch bei AJAX-Requests– nie mehr $(document).ready()

• o:resourceInclude– bettet Response eines Resource Requests auf Servlet/JSP in aktuelle

Seite ein– Dirty, aber hilfreich für Migrationen

52

Page 27: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

27

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

OmniFaces – Toolbox

• GenericEnumConverter

• SelectItemsConverter– Konvertiert komplexe Objekte in SelectItems– Kann bei Bedarf leicht erweitert werden

• FullAjaxExceptionHandler– Problem: Exceptions bei Ajax Requests nicht zum Benutzer propagiert

• ViewExpiredExceptions

– Redirect als Antwort auf Ajax-Request, falls Exception

• CharacterEncodingFilter

• DefaultPhaseListener

53

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

OmniFaces - Utilities

• Component– getClosestParent()

• Events– addAfterPhaseListener()

• Exception– unwrap()

• Faces– nie mehr FacesContext.getCurrentInstance().getExternalContext()...– addResponseHeader()

• Messages– add()– createError ()– addGlobalInfo ()– addFlashGlobalInfo ()

54

Page 28: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

28

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

OmniFaces - weitere Features

• Erleichtertes (programmatisches) Ajax-Handling– Daten via Ajax-Response an Client übergeben– Ausführung von Callbacks

• El-Funktionen– Arrays #{of:contains(paramValues.test, 42)}– Converter #{of:mapToList(convertersBean.map)}– o:importConstants

• zugriff auf Konstanten aus EL heraus• #{Foo.FOO1}

– Strings• #{of:escapeJS(string4)}• #{of:encodeURL(string4)}• #{of:abbreviate(string1, 20)}

• HTML5 Renderkit

55

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

Richfaces Tools

• Eclipse-Plugin– Bessere JSF Unterstützung in Eclipse

• EL-Unterstützung– Syntax-Highlighting– Code-Completion– Type-Ahead– Sprung von xhtml auf Bean

• Versteht JSF-Annotationen

56

Page 29: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

29

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

• Problemstellung:– JSF-Scopes passen nicht– Besser wäre pro Anwendungsfall (= mehrere Requests)– Typischerweise Persistence Session / Request

• Lösungskonzept:– Persistence Session über mehrere Requests offen lassen– Demarkation durch Conversation

• Features– Conversation-Scope (Spring basiert)– Persistence Context in Conversation Scope– Flows

57

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

• Problemstellung:– CDI-Conversations haben einen fest definierten Start und Endpunkt– Orchestra- Features mit CDI-Beans ermöglichen

• Features– @ConversationScoped– @Window Scoped– @VieAccessScoped

• Ausblick:– JSF 2.2: Faces Flows– Orchestra und CODI weiterhin interessant für

Wartung von JSF 1.2 Legacy-Anwendungen

58

Page 30: Über den Tellerrand - OIO · Apache DeltaSpike JSF-Module • Typesafety – Navigation • Statt  • Refactoring von Navigationspfaden – Messages Keine

26.07.2013

30

JSF-Bibliotheken und Tools für den praktischen Eins atz© 2013 Orientation in Objects GmbH

• BeanValidation (JSR 303) für JSF – Noch aus JSF 1.2 Zeiten– Mittlerweile in JSF 2.0 standardisiert

• Weiterhin interessant für Wartung von Legacy-Anwendungen– Speziell MyFaces Trinidad

• Client-Side Validation

• Project Health:

59