HTML5 Friendly Markup in JSF 2.2

Ed Burns (Spec Lead für JSF) hat heute in seinem Blog ein paar Informationen zum Thema JSF 2.2 veröffentlicht: HTML5 Friendly Markup in JSF 2.2

Leider hat sein Blog-Parser den Beispiel-Code völlig zerpflückt, sodass nicht mehr viel zu erkennen ist. Als Quintessenz aus seinem Text entnehme ich, dass er in Zeiten von modernen Single Page Web-Apps, die immer mehr UI-Logik auf den Client verlagern, weiterhin Sinn und Nutzen sieht, aber sie mit JSF 2.2 einen (grossen) Schritt auf moderne Anforderungen zugehen möchten, in dem sie Entwiklern die Möglichkeit geben, Anwendungen in purem HTML5 schreiben zu schreiben und nur mit ein paar JSF-Anreicherungen zu versehen, um auf dem Server von JSF’ Stärken zu profitieren:

[fancy_list]

  • quick to build
  • maintainable
  • localizable
  • accessible
  • secure
  • device independent
  • good looking and fun to use

[/fancy_list]

(schamlos kopiert aus seinem Vortrag auf der Java One)

Wie soll das nun aussehen? Der Code in seinem Blogpost ist wie gesagt momentan leider nicht lesbar, aber in genanntem Vortrag gibt es ein kleines Beispiel, was kombiniert mit dem Code aus seinem Blog Post so aussehen würde:

<xmlns="http://www.w3.org/1999/xhtml"
     xmlns:jsf="http://java.sun.com/jsf" xmlns:f="http://java.sun.com/jsf/core">
<html>
  <head jsf:id="head">
    ...
  </head>
  <body jsf:id="body">
    <input type="color" jsf:value="#{colorBean.color} />
    <input type="date" jsf:value="#{calendarBean.date}>
      <f:ajax execute="@this" render="@form"/>
    </input>
  </body>
</html>

Für HTML5-Neulinge: die beiden Input-Felder nutzen 2 von den neuen Input-Typen und rendern eine browser-generierte Farbauswahl-Box und einen Datepicker (ganz ohne weitere Komponenten).

Ich denke man kann schon ganz gut sehen, wohin die Reise geht. Man hat nun die Möglichkeit komplett auf die JSF-UI-Logik und JSF-UI-Komponenten zu verzichten und sich für das User Interface auf pures HTML zu verlassen. Im HTML-Quellcode wird dann von JSF nur noch wenig zu sehen sein, ausser ein paar Anreicherungen für den Submit/Postback oder wenn etwas ajaxifiziert werden soll. Das passt dann auch gut zum neuen HTML5-Standard-Doctype.

Die Idee finde ich an sich gar nicht so schlecht und ist definitiv ein notwendiger Schritt, um JSF aus seiner angestaubten Ecke zu holen, wo alles auf dem Server passiert und der Client nur zum Anzeigen des Renderergebnisses und dem Postback der Daten dient. So funktioniert moderne Webentwicklung einfach nicht mehr.

Aber ist das wirklich ein überzeugendes Argument für die Zukunft von JSF? Werden dadurch mehr Leute JSF in neuen Projekten einsetzen? Die oben genannten Stärken treffen alle auch auf die Kombination (Single Page) Client-Side Webapp + REST-Schnittstelle (JaxRS) zu, was ich jedenfalls in einem komplett neuen Projekt JSF deutlich vorziehen würde.

Download Movie Life (2017)

Life (2017) HD

Director : Daniel Espinosa.
Writer : Rhett Reese, Paul Wernick.
Producer : Bonnie Curtis, David Ellison, Dana Goldberg, Julie Lynn.
Release : March 23, 2017
Country : United States of America.
Production Company : Columbia Pictures, Skydance Productions, Sony Pictures Entertainment (SPE), Nvizage.
Language : 广州话 / 廣州話, English, 日本語.
Runtime : 103 min.
Genre : Horror, Science Fiction, Thriller.

Movie ‘Life’ was released in March 23, 2017 in genre Horror. Daniel Espinosa was directed this movie and starring by Rebecca Ferguson. This movie tell story about The six-member crew of the International Space Station is tasked with studying a sample from Mars that may be the first proof of extra-terrestrial life, which proves more intelligent than ever expected.

Download Movie Life (2017)

Do not miss to Watch movie Life (2017) Online for free with your family. only 2 step you can Watch or download this movie with high quality video. Come and join us! because very much movie can you watch free streaming.

Watch and Download Full Movie Life (2017)

Incoming search term :

Life 2017 HD English Full Episodes Download, Watch Life 2017 Online Putlocker, Life 2017 Episodes Watch Online, movie Life 2017 streaming, Life 2017 English Episodes Free Watch Online, Watch Life 2017 Online Megashare, watch movie Life 2017 now, Life 2017 HD Full Episodes Online, movie Life 2017 download, watch full Life 2017 movie online, Watch Life 2017 Online Free megashare, Life 2017 For Free online, Watch Life 2017 Online Free Viooz, watch full movie Life 2017 online, Life 2017 Online Free Megashare, Life 2017 Full Episodes Online, Life movie trailer, Life 2017 English Full Episodes Download, Life 2017 Full Episodes Watch Online, Life 2017 film trailer, Watch Life 2017 Online Free, Life 2017 Full Episode, watch full Life movie, download film Life, streaming Life film, streaming movie Life 2017, Life 2017 film download, Life 2017 Watch Online, Watch Life 2017 Online Free putlocker, live streaming movie Life 2017 online, watch full film Life 2017, Life 2017 English Full Episodes Watch Online, streaming film Life, download movie Life, download movie Life 2017 now, Life 2017 English Episodes, Life 2017 movie streaming, Life 2017 For Free Online, Life 2017 Episodes Online, watch Life film now, Life 2017 English Full Episodes Free Download, Life 2017 movie download, Watch Life 2017 Online Viooz, film Life 2017, Life 2017 English Episode, Life 2017 English Full Episodes Online Free Download, Watch Life 2017 Online Free Putlocker,

Crockford on Javascript

Wer noch nie einen Vortrag von Douglas Crockford gesehen hat, dem empfehle ich ganz herzlich seine “Crockford on Javascript” Vorträge auf Youtube.

Douglas Crockford war lange Zeit Javascript Evangelist bei Yahoo und ist der Entdecker des JSON-Formats. Übrigens Entdecker und nicht Erfinder, denn wie er selbst mal in einem Vortrag hervorgehoben hat, musste dieses Format quasi in Javascript entdeckt werden, weil es elementarer Teil der Sprache ist.

Ich finde seine Vorträge äusserst faszinierend, wirken sie doch eigentlich extrem trocken, aber sehr fundiert und sind dann doch immer wieder mit zahlreichen Spitzen garniert. Neben zahlreichen Anekdoten, kann man eine Menge als Javascript-Entwickler lernen.

OmniFaces – Das Schweizer Taschenmesser für JSF-Entwickler

Wer sich ein bisschen bei Google nach JSF-Tipps umsieht, wird schnell auf stackoverflow stossen, wo der Autor [highlight2]balusc[/highlight2] schon lange eine Koryphäe ist.

Seit einem halben Jahr stellt er eine eigene JSF-Bibliothek zum Download zur Verfügung, die man durchaus als Schweizer Taschenmesser für JSF-Entwickler bezeichnen könnte: OmniFaces.

OmniFaces ist keine Komponenten-Bibliothek wie PrimeFaces oder RichFaces, sondern ist eine Sammlung von kleinen bis grossen Helferlein, die einem das Leben als JSF-Entwickler deutlich erleichtern.

Der Grund warum ich es in unserem Projekt eingeführt habe, ist der [highlight1]Combined Resource Handler[/highlight1], der JSF endlich ein (fast) vernünftiges Resource-Rendering beibringt.

Wer sich mit Web-Performance auseinandersetzt, wird seit Jahren die immer gleichen Empfehlungen finden: pro Seite genau eine CSS-Datei so früh wie möglich im Header einbinden und genau eine Javascript-Datei möglichst ganz am Ende des HTML-Body einbinden (mit Ausnahme von Ressourcen von einem CDN). Beides ist mit JSF nicht möglich, wenn man Komponenten-Bibliotheken wie PrimeFaces, etc. pp. einsetzt. Der Grund ist, dass JSF 2.0 zwar mittlerweile einen eigenen Resource-Handler hat, aber dieser nur 2 Modi kennt, wie die Ressourcen einer Komponente gerendert werden: im HTML-Kopf in der Reihenfolge wie sie im Code definiert sind oder an der Stelle wo sie im Code definiert sind.

Der Combined Resource Handler von OmniFaces ersetzt den Original JSF Resource Handler und rendert die Resourcen, die normalerweise als Einzel-Ressourcen im HTML-Kopf ausgegeben werden sollen, zusammengefasst als jeweils eine CSS-Datei und eine Javascript-Datei. Beide Dateien bleiben zwar weiterhin im Kopf und werden nicht im Body-Ende gerendert (das würde wegen dem zweiten Modus, dass Ressourcen direkt im Code ausgegeben werden auch gar nicht gehen) aber bei uns hat das schon dazu geführt, dass auf komplexen Seiten statt 4 PrimeFaces-Ressourcen + der Standard-JSF-Javascript-Bibliothek nur noch 1 Javascript-Datei ausgegeben wurde. Genauso bei den Primefaces-CSS-Dateien. search multiple domain names

Wenn man jetzt noch dafür sorgt, dass die eigenen Ressourcen immer am Ende vom HTML-Body stehen, hat man eine (fast) perfekte Ladeperformance von externen Ressourcen erreicht.

Neben dem Combined Resource Handler bietet OmniFaces aber noch eine ganze Menge anderer Funktionen, z.B. ein [highlight1]HTML5-Renderkit[/highlight1] oder diverse Validatoren, um mehrere Felder gemeinsam zu validieren. Eine Übersicht findet man im OmniFaces Showcase

String.prototype.endsWith(str) in Javascript

In meinem Projekt bin ich letztens über folgende, doch sehr hässlichen Konstrukte gestolpert:

function onKeypress(element)) {
  if (jQuery(element).attr("id").indexOf(str) != -1)) {
    //dosomething
  }
}

Um hier zu erfassen, dass der Code überprüft, ob die ID eines Elementes einen bestimmten String enthält, braucht man schon etwas länger. Neben dem überflüssigen jQuery-Aufruf, um die ID zu ermitteln, fällt auf, dass hier eine String-Utility-Methode wie [highlight1]contains()[/highlight1], [highlight1]startsWith()[/highlight1] oder [highlight1]endsWith()[/highlight1] nützlich wäre, um die Lesbarkeit des Codes deutlich zu verbessern. Ich habe mich deshalb fix entschlossen, die entsprechenden Methoden Projekt-weit nachzubauen.

Da es im konkreten Beispiel ausreichend war zu überprüfen, ob ein String mit einem anderen String endet, befasse ich mich hier mit [highlight1]String.prototype.endsWith(str)[/highlight1]. Die sehr ähnlichen Methoden [highlight2]contains()[/highlight2] und [highlight2]startsWith()[/highlight2] lassen sich analog umsetzen.

Per Google findet man diverse Methoden wie [highlight1]endsWith()[/highlight1] in Javascript nachzubauen ist. Folgende drei Varianten habe ich mal genauer untersucht:

String.prototype.endsWith1 = function(str) {
  var lastIndex = this.lastIndexOf(str);
  return (lastIndex !== -1) && (lastIndex + str.length === this.length);
};

String.prototype.endsWith2 = function(s) {
  return this.length >= s.length && this.substr(this.length - s.length) === s;
}

String.prototype.endsWith3 = function(str) {
  return (this.match(str + "$") === str)
}

Aufgrund einer Diskussion auf stackoverflow hat mich auch noch interessiert, welche von diesen drei Varianten in modernen Browsern am schnellsten abläuft. Die Auswertung mittels jsperf hat mich dann doch überrascht. Zwar sind die Varianten 1 + 2 browserübergreifend mit geringem Abstand untereinander (aber weit vor Variante 3) am schnellsten, allerdings war Chrome 22 um Größenordnungen langsamer, Firefox war ungefähr 10 mal so schnell!

In mein Projekt eingebaut, habe ich dann Variante 1. Und um sicherzugehen, eine eventuell schon vorhandene Methode am String-Prototypen nicht versehentlich zu überschreiben, sollte man natürlich vorher noch überprüfen, ob der String-Prototyp nicht schon so eine Methode hat. Der komplette Code sieht so aus:

if (!String.prototype.hasOwnProperty("endsWith")) {
  String.prototype.endsWith = function(str) {
    var lastIndex = this.lastIndexOf(str);
    return (lastIndex !== -1) && (lastIndex + str.length === this.length);
  };
}

Obiges Beispiel im richtigen Code, sieht dann damit viel schöner aus:

function onKeypress(element)) {
  if (element.id.endsWith(str)) {
    //dosomething
  }
}

Watch Movie Online Collateral Beauty (2016)

Collateral Beauty (2016) HD

Director : David Frankel.
Writer : Allan Loeb.
Producer : Michael Sugar, Brad Dorros, Allan Loeb, Anthony Bregman, Kevin Scott Frakes.
Release : December 6, 2016
Country : United States of America.
Production Company : Warner Bros. Pictures, Likely Story, Anonymous Content, Overbrook Entertainment, PalmStar Media.
Language : English.
Runtime : 97 min.
Genre : Drama, Romance.

Movie ‘Collateral Beauty’ was released in December 6, 2016 in genre Drama. David Frankel was directed this movie and starring by Will Smith. This movie tell story about Retreating from life after a tragedy, a man questions the universe by writing to Love, Time and Death. Receiving unexpected answers, he begins to see how these things interlock and how even loss can reveal moments of meaning and beauty.

Streaming Full Movie Collateral Beauty (2016)

Do not miss to Watch movie Collateral Beauty (2016) Online for free with your family. only 2 step you can Watch or download this movie with high quality video. Come and join us! because very much movie can you watch free streaming.

Download and Watch Movie Collateral Beauty (2016)

Incoming search term :

watch Collateral Beauty 2016 film now, Collateral Beauty 2016 Full Episodes Online, trailer movie Collateral Beauty 2016, Collateral Beauty 2016 English Full Episodes Free Download, Collateral Beauty 2016 live streaming movie, download full movie Collateral Beauty 2016, Collateral Beauty 2016 HD Full Episodes Online, Collateral Beauty film, Watch Collateral Beauty 2016 Online Free Putlocker, Watch Collateral Beauty 2016 Online Free megashare, Collateral Beauty 2016 For Free online, Collateral Beauty 2016 Episodes Online, Collateral Beauty 2016 Watch Online, Watch Collateral Beauty 2016 Online Free Viooz, download Collateral Beauty movie, Collateral Beauty 2016 For Free Online, Collateral Beauty 2016 Online Free Megashare, Watch Collateral Beauty 2016 Online Free, Collateral Beauty 2016 English Full Episodes Download, Collateral Beauty 2016 Full Episode, Collateral Beauty 2016 Episodes Watch Online, Collateral Beauty 2016 English Episodes Free Watch Online, Collateral Beauty film trailer, streaming movie Collateral Beauty, download movie Collateral Beauty 2016, film Collateral Beauty, Watch Collateral Beauty 2016 Online Megashare, download film Collateral Beauty 2016, streaming Collateral Beauty, live streaming movie Collateral Beauty 2016, Watch Collateral Beauty 2016 Online Putlocker, watch full Collateral Beauty 2016 movie online, Collateral Beauty 2016 Full Episodes Watch Online, Collateral Beauty 2016 English Episodes, Watch Collateral Beauty 2016 Online Viooz, Collateral Beauty 2016 English Full Episodes Watch Online, Collateral Beauty 2016 English Full Episodes Online Free Download, Watch Collateral Beauty 2016 Online Free putlocker, Collateral Beauty 2016 English Episode, Collateral Beauty live streaming film online, Collateral Beauty 2016 HD English Full Episodes Download, live streaming movie Collateral Beauty 2016 online,