JSF Formulare mit Excel und OpenRefine generieren

Mit OpenRefine lassen sich Daten bereinigen, verbessern und exportieren.

Wer ein bisschen kreativ ist, kann mit der Export Funktion sogar Code für Xpert.ivy generieren. In diesem Screencast zeige ich Ihnen, wie Sie mit Excel und OpenRefine schnell und einfach JSF Formulare generieren können.

OpenRefine installieren und starten

Als erstes muss man OpenRefine installieren und starten. Auf der Wiki Seite von OpenRefine finden Sie eine Anleitung.

Sobald OpenRefine installiert und gestartet ist, öffnet sich automatisch ein Browser Fenster mit OpenRefine.

Im folgenden Screencast sehen Sie, wie Sie aus einer Excel Tabelle ein Formular generieren können.

Wie funktioniert es?

Mit der Template Export Funktion kann man für die verschiedenen Bereiche Templates definieren. Prefix und Suffix wurden hier benutzt, um das p:panelGrid zu öffnen bzw. zu schliessen.

Interessant ist vor allem das Row Template. Dies wird für jede Zeile der Tabelle durchlaufen.

Code-Snippet 1: Row Template

Hier kann per {{cells["spalte"].value}} auf den Wert der jeweiligen Spalte zugegriffen werden.

Fazit

Während dies ein eher triviales Beispiel ist so könnte man ohne weiteres mächtigere Templates erstellen. Man könnte aus einem Datenmodell z.B. das Formular, die Datenklasse sowie den JPA Code generieren.

Lassen Sie Ihrer Kreativität freien lauf!
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

PrimeFaces Theme pro Projekt konfigurieren

Themes in PrimeFaces zu konfigurieren ist einfach. Doch was ist, wenn man auf einem Xpert.ivy Server 2 Projekte hat die unterschiedliche Themes benötigen?

Ein Beispiel wäre, wenn es ein Projekt für Kunden und eines für die Administration gibt.

Ich hatte die Aufgabe dies in der Soreco zu lösen. Dabei ist eine kleine Extension zusammen mit einer Anleitung raus gekommen.

Zur Wiki Page mit dem Download und der Anleitung.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Xpert.ivy Code Rezept: File Download mit p:fileDownload

Problem

Sie wollen eine Datei zum Download anbieten.

Lösung

Mit p:fileDownload kann man einen beliebigen (File)InputStream herunterladen.

SVN

Sie können das fertige Projekt per SVN von http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/Forms in den Xpert.ivy Designer importieren.

Code

Die Demo File Download Demo zeigt wie man eine Datei herunterladen kann.

Um einen Download zu initialisieren benötigt man einen p:commandButton (oder p:commandLink) und ein p:fileDownload.

Code-Snippet 1: Code für File Download

Wichtig beim p:commandButton ist, dass das ajax Attribut auf false gesetzt ist. Grund dafür ist, dass man Files nicht per AJAX herunterladen kann.

Das value Attribut von p:fileDownload zeigt auf ein StreamedContent Objekt. Das ist das Objekt bzw. das File das man herunterladen will.

Code-Snippet 2: StreamedContent Objekt erstellt

In der Logic erstellen wir ein DefaultStreamedContent Objekt, welches das File an den Browser sendet.

Wichtig ist auch, dass der FileInputStream nicht per close() geschlossen wird. Dies hätte zur Folge, dass der Download fehlschlägt.

Das schliessen macht das DefaultStreamedContent automatisch nachdem der Download abgeschlossen ist.

Weiterführende Ressourcen

Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Xpert.ivy Multi View Navigation

Bei jeder nicht trivialen Applikation wird sich schnell die Frage stellen: Wie kann man zwischen verschiedenen Views die man hat wechseln?

In JSF gibt es dafür einen Standard-Mechanismus mit <navigation-rule> und dem action Attribut.

Xpert.ivy bietet einen ähnlichen Mechanismus der sich Multi View nennt. Mit Multi View kann man mehrere Views innerhalb eines einzigen Html User Dialoges definieren und wie in JSF über das action Attribut zwischen den einzelnen View hin und her wechseln.

Multi View erstellen

Um eine View zu einem Html User Dialog hinzuzufügen, klickt man mit der rechten Maustaste auf den Html User Dialog und wählt New -> Other. Nun sucht man nach view, wählt Html Dialog View aus und klickt Next. Auf dem nächsten Dialog gibt man noch den Namen der View ein.

Dies ist zugleich auch der Name, der im action Attribut verwendet werden muss. Dazu gleich mehr.

Zwischen Views wechseln

In den Html Dialog Demos gibt es eine Demo die zeigt, wie man zwischen den einzelnen Views hin und her wechseln kann.

Die Demo ist unter ch.ivyteam.htmldialog.demo.input.MutliViewDemo zu finden.

Das Prinzip ist einfach: Man definiert eine Methode in der Logic die einen String zurück gibt. Dieser String muss der Name der View sein, zu der man wechseln will.

In den Html Dialog Demos wird als Input-Parameter noch der Name der aktuellen View mitgegeben, damit man in der Logic entscheiden kann, welches die nächste View sein muss.

Code-Snippet 1: View über action wechseln

Im Code-Snippet 1 sieht man, wie die Methode zum wechseln zwischen den Views über das action Attribut aufgerufen wird.

Fazit

Multi View ist ein einfaches und zugleich sehr wichtiges Werkzeug das jeder Xpert.ivy Entwickler kennen muss.

Mit Multi View lassen sich auf einfache Art und Weise Html User Dialoge erstellen, die zwischen den verschiedenen Views hin und her wechseln müssen.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Eingabefelder und Composite Components mit <f:validate...> validieren

Müll rein, Müll raus. Das passiert, wenn man seine Formulare nicht richtig validiert. Zum Glück bietet JSF diverse Möglichkeiten dies einfach und richtig zu tun.

In diesem Tutorial schauen wir uns an, wie man mit <f:validate...> Eingabefelder und Composite Components validieren kann.

SVN

Sie können das fertige Projekt per SVN von http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/Forms in den Xpert.ivy Designer importieren.

web.xml konfigurieren

Bevor wir loslegen können, müssen wir noch etwas im web.xml ([ivy-installations-pfad]/webapps/ivy/WEB-INF) anpassen bzw. kontrollieren. Grund dafür ist, dass leere Eingabefelder aus Kompatibilitätsgründen zu JSF 1.x nicht validiert werden. Wer mehr darüber erfahren will, kann dies hier tun.

Im web.xml muss folgender Eintrag drin sein.

Code-Snippet 1: web.xml Eintrag

Eingabefelder validieren

Um ein Eingabefeld wie z.B. ein <p:inputText> mit <f:validate...> validieren zu können, kann man die Validatoren zwischen <p:inputText>...</p:inputText> schreiben.

Code-Snippet 2: Eingabefeld validieren (ConfigureValidationComponent)

Eingabefelder von Composite Components validieren

Wie sieht es aber aus, wenn man die Eingabefelder von Composite Components je nach Situation anders validieren will?

Im <cc:interface> eines Composite Components kann man so genannte valueHolder bzw. editableValueHolder definieren. Diese erlauben es unter andrem <f:validate...> Konfigurationen von aussen zu definieren.

Code-Snippet 3: valueHolder definieren (ConfigureValidationComponent)

Bei einen valueHolder gibt man den Namen an unter dem man ihn von aussen ansprechen will sowie die Eingabefelder, die man über diesen valueHolder konfigurieren will.

Jetzt kann man den den Composite Component benutzen und mit <f:validate...> konfigurieren.

Code-Snippet 4: valueHolder konfigurieren (ConfigureValidationDemo)

Man beachte das for Attribut das auf das name Attribut des valueHolder referenziert.

Fazit

Mit <f:validate...> und valueHolder kann man auf einfach Art und Weise die Validation von Composite Components konfigurierbar machen.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Rothorn Sprint 14 Review Meeting: Doku & Issues

Mit dem 14. Rothorn Sprint sind die letzten neuen Features in Xpert.ivy 5.0 eingeflossen. Ab sofort werden bis zum Release am 11. April nur noch Bugs gefixt.

Die letzten Features die es in den kommenden Release geschafft haben sind:

  • Multi View Navigation in Html User Dialogen
  • File Upload
  • Templates im webContent Ordner
  • Kompletter Refactoring Support für Html User Dialoge

Multi View Navigation

Mein Highlight ist die Multi View Navigation innerhalb eines Html User Dialoges. Ähnlich wie bei Standard JSF mit Navigation Rules, kann man nun das action Attribut von p:commandButton und co. benutzen, um zwischen verschiedenen Views hin und her zu Navigieren.

Schauen Sie sich dazu unbedingt die Demo in den Html Dialog Demos an.

Templates im webContent Ordner

Vor diesem Sprint Release musste man die Templates noch im src_hd Ordner anlegen und relativ zum Html User Dialog referenzieren. Dies ist nun nicht mehr nötig.

Ab sofort können die Templates im webContent Ordner angelegt und eindeutig angesprochen werden.

Ich habe dazu das Templating Tutorial aktualisiert.

Dokumentation und Demos

Die Dokumentation wurde um ein neues Html User Dialog Kapitel ergänzt. Ich habe einen kurzen Blick drauf geworfen und finde es gut gelungen.

Auch die Html Dialog Demos wurden noch einmal überarbeitet und sind eine tolle Ressource für Beispiele wie z.B. Multi View Navigation, File Upload und vieles mehr.

Fazit

Das waren also die letzten Features die es in Xpert.ivy 5.0 geschafft haben. Ab sofort werden nur noch Bugs bis zum Release am 11. April gefixt.

Mit den Features die Xpert.ivy 5.0 nun bietet denke ich, dass dies ein guter erster Release ist mit dem man tolle Applikationen und Prozesse entwickeln kann.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Xpert.ivy ActiveMQ JMS Extension

Vor einiger Zeit hatte ich eine JMS Extension für Xpert.ivy angekündigt. Heute ist es nun soweit. Eine erste Version für ActiveMQ 5.8.0 steht jetzt auf google code zur Verfügung.

Ivy 5.0 Projekt: http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/IvyActiveMQ
Ivy 5.0 Demo Projekt: http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/IvyActiveMQDemo

Das Demo Projekt zeigt wie man das Ganze verwenden kann. Die URL zum ActiveMQ Broker muss per Globale Variable activemq.broker.url konfiguriert werden.

Sie müssen eine ActiveMQ Instanz am laufen haben damit das die Demo funktioniert (Download).

Wenn Sie mehr über ActiveMQ lernen wollen, empfehle ich Ihnen ActiveMQ in Action zu lesen.

Viel Spass!

Weiterführende Ressourcen

Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.