www.wikidata.de-de.nina.az
Apache Tapestry ist ein Open Source Framework fur die Programmiersprache Java mit dem Webanwendungen erstellt werden konnen Es ist kein eigenstandiger Server sondern lauft im Kontext eines Servlet Containers wie dem Web Server Tomcat Tapestry ist seit 2006 ein Toplevel Projekt der Apache Software Foundation 4 Apache TapestryBasisdatenEntwickler Apache Software FoundationErscheinungsjahr 2000 1 11 Februar 2013 2 Aktuelle Version 5 8 2 3 19 Juni 2022 Betriebssystem PlattformunabhangigProgrammiersprache Java 2 Lizenz Apache Lizenztapestry apache orgTapestry Anwendungen bestehen aus Seiten wobei eine Seite aus wiederverwendbaren und konfigurierbaren Komponenten besteht Komponenten wiederum konnen durch sogenannte Mixins erweitert werden In Tapestry besteht eine Seite aus zwei Bestandteilen Eine XML Vorlage tml und eine Javaklasse java Innerhalb der XML Vorlage konnen sowohl HTML Tags als auch spezifische Tapestry Tags fur den dynamischen Inhalt verwendet werden Diese Tapestry Tags werden uber den im Wurzelelement spezifizierten Namespace eingebunden Die Javaklasse wird zur Verarbeitung von Ereignissen wie zum Beispiel den Klick auf einen Tapestry Link oder das Absenden eines Formulars eingesetzt Die jeweils aufzurufenden Methoden konnen entweder uber ein vorgegebenes Namensschema oder uber eine Annotation festgelegt werden Die beiden im Folgenden aufgefuhrten Methoden wurden so beispielsweise auf das Auslosen des Links mit der ID MyLink reagieren void onActionFromMyLink OnEvent value action component myLink void myMethod Mit seiner komponentenbasierten Architektur der Trennung von Darstellung HTML XML und Code ahnelt Tapestry konzeptuell WebObjects ohne mit diesem kompatibel zu sein Zusammen mit Apache Cayenne eingesetzt ist es durchaus als freier WebObjects Ersatz verwendbar Der Wechsel von einem Framework zum anderen sollte fur mit einem der beiden Frameworks erfahrenen Entwickler aufgrund der Ahnlichkeiten reibungslos vonstattengehen Inhaltsverzeichnis 1 Besondere Features 2 Vorteile 3 Rewinding nur bis Tapestry 4 x 4 Beispiele 4 1 Eine einfache Tapestry Webseite 4 2 Tapestry Komponenten 5 Weblinks 6 EinzelnachweiseBesondere Features BearbeitenLive Class Reloading Tapestry uberwacht im Entwicklungsmodus alle Dateien und ubernimmt Anderungen an Seiten Komponenten Service Implementierungen sowie HTML Templates und Properties Dateien automatisch Dadurch lasst sich die Produktivitat von Entwicklern deutlich steigern da die Anwendung nicht nach jeder Anderung neugestartet werden muss 5 Komponenten basiert Einzelne Seiten lassen sich in Tapestry aus kleinen wiederverwendbaren Komponenten bauen Jede Komponente hat dabei ihre eigene Java Klasse und ihr eigenes Template Tapestry lasst sich dabei leicht durch eigenen Komponenten erweitern 6 Konvention vor Konfiguration Tapestry nutzt anstatt XML Dateien Namenskonventionen und Annotations um eine Anwendung zu konfigurieren 7 Geringer Einsatz der HttpSession Tapestry verzichtet weitestgehend auf den Einsatz der HttpSession um auch im Clusterbetrieb moglichst effizient zu sein 8 Post Redirect Get Formulare in Tapestry folgen dem Post Redirect Get Prinzip Damit wird verhindert dass Benutzer ein Formular aus Versehen mehrfach absenden Daruber hinaus funktionieren die Vor und Zuruck Button im Browser wie gewohnt und Urls lassen sich problemlos speichern 9 Inversion of Control IOC Tapestry basiert auf seinem eigenen Inversion of Control Framework ahnlich Google Guice Es wurde jedoch mit dem Ziel entwickelt alle Teile einer Anwendung ersetzbar und konfigurierbar zu machen und kann auch ausserhalb von Webanwendungen verwendet werden 7 Tapestry IoC kann gegebenenfalls auch durch Spring IoC ersetzt werden 10 Vorteile BearbeitenTapestry ist dazu gedacht die Entwicklung von Java Web Anwendungen zu vereinfachen Das Framework wurde so entworfen dass es einfacher moglich ist robuste Anwendungen zu erzeugen die wiederum einfacher zu installieren zu debuggen und zu warten sind als herkommliche Servlet Anwendungen Es nimmt dem Entwickler die Sorgen uber Multithreading ab Durch die klare Trennung von HTML und Anwendungscode konnen Java und HTML Entwickler gemeinsam an einem Projekt arbeiten Tapestry unterstutzt daruber hinaus die Internationalisierung von Anwendungen sowie die Validierung von Benutzereingaben und bietet eine Reihe von vorgefertigten GUI Komponenten wie Kalender sortierbare Tabellen und Baume Der Funktionsumfang kann uber das Erstellen eigener Komponenten erweitert werden Ein weiterer Vorteil von Tapestry ist die Tatsache dass Java Klassen zu Webseiten gewohnlich einfache POJOs sind Es ist also nicht notig von Superklassen zu erben oder vorgeschriebene Interfaces zu implementieren Dafur werden Annotations verwendet mit denen die Vererbung indirekt hergestellt wird Ohne projektfremde Imports kommt auch Tapestry nicht aus Rewinding nur bis Tapestry 4 x BearbeitenIn Tapestry bis zur Version 4 findet die Ubertragung von Daten mit Hilfe eines Formulars in drei Schritten statt Im ersten Schritt wird die HTML Seite mit dem Formular gerendert Der Nutzer editiert im zweiten Schritt die Eingabefelder des Formulars und startet schliesslich die dritte Phase indem er die Submit Schaltflache betatigt Der Vorgang hat zwei Request Zyklen zur Folge Im ersten Zyklus wird die HTML Seite angefordert und das Formular wird in diesem Zyklus gerendert Der zweite Request Zyklus wird beim Betatigen der Submit Schaltflache angestossen In diesem Zyklus muss Tapestry die folgenden Aktionen ausfuhren die Werte aus den Eingabefeldern sind zu extrahieren diese Werte sind manchmal zu konvertieren String in Integer die konvertierten Werte sind den richtigen Page Componenten Properties zuzuweisenDa in Tapestry die Zuordnung der Properties zu den Eingabefeldern wahrend des Rendering erfolgt nutzt Tapestry eine ungewohnliche Herangehensweise Es ermittelt genau diese Beziehungen indem die Seite erneut gerendert wird Diese Phase wird auch Rewind Phase genannt In dieser Phase wird jede Komponente in der Form in der gleichen Reihenfolge besucht wie es beim initialen Rendern geschieht und es werden die oben beschriebenen Aktionen ausgefuhrt Im Unterschied zum initialen Rendervorgang wird die Listener Methode der Submit Form nur in der Rewinding Phase aufgerufen In Tapestry 5 wurde der fragile Rewind Mechanismus durch generierte Hidden Fields abgelost diese beinhalten nun die Information die fur die Submit Verarbeitung notwendig sind Beispiele BearbeitenEine einfache Tapestry Webseite Bearbeiten Im Folgenden ist eine einfache Tapestry Webseite aufgefuhrt Innerhalb dieser Seite wird ein globales Layout t layout verwendet Dieses hat den Parameter title Um die Internationalisierung der Seite zu gewahrleisten wird in der Seitenbeschreibung nicht explizit der gewunschte Titel sondern ein Key fur die jeweilige Ubersetzungsdatei angegeben Je nach gewahlter Sprache wird die Variable message title nun durch einen beliebigen Text ersetzt Dieser wird in der zur Seite gehorigen properties Datei festgelegt Daruber hinaus wird hier ein einfacher Tapestry Pagelink auf die Index Seite eingesetzt Die eigentliche Webseite About tml lt t layout title message title xmlns t http tapestry apache org schema tapestry 5 1 0 xsd xmlns p tapestry parameter gt lt p gt message text lt p gt lt t pagelink page index gt message index lt t pagelink gt lt t layout gt Die zugehorige Java Klasse sieht wie folgt aus package org examples pages public class About Deutsche Properties Datei title Beispielseite text Dies ist eine einfache Beispielseite index Hauptseite Englische Properties Datei title my little example text This is only a test index Mainpage Tapestry Komponenten Bearbeiten Mehrfach verwendeter Code kann in einzelne Komponenten ausgegliedert werden Diese bestehen normalerweise wie eine gewohnliche Webseite aus einer Java Klasse einer TML Datei und den zugehorigen Ubersetzungen Die hier aufgefuhrte Komponente enthalt einen Parameter und erstellt fur diesen einen Link mit zugehorigen Text lt t container xmlns t http tapestry apache org schema tapestry 5 1 0 xsd gt lt t pagelink page targetPage gt Link auf die Seite targetPage lt t pagelink gt lt t container gt Die zugehorige Java Klasse public class myPageLink Parameter defaultPrefix literal Property private String targetPage Einsatz der Komponente lt t myPageLink targetPage index gt Weblinks Bearbeitenoffizielle WebprasenzEinzelnachweise Bearbeiten books google at a b projects apache org abgerufen am 8 April 2020 tapestry apache org tapestryjava blogspot de tapestry apache org Drobiazko 2012 S 20 a b Drobiazko 2012 S 7 tapestry apache org tapestry apache org tapestry apache orgNormdaten Sachbegriff GND 4793313 6 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Apache Tapestry amp oldid 234780913