Apache Tapestry

Apache Tapestry

Basisdaten

Entwickler Apache Software Foundation
Erscheinungsjahr 2000[1], 11. Februar 2013[2]
Aktuelle Version 5.8.4[3]
(6. Februar 2024)
Betriebssystem Plattformunabhängig
Programmier­sprache Java[2]
Lizenz Apache-Lizenz
tapestry.apache.org

Apache Tapestry ist ein Open-Source-Framework für die Programmiersprache Java, mit dem Webanwendungen erstellt werden können. Es ist kein eigenständiger Server, sondern läuft im Kontext eines Servlet-Containers wie dem Web-Server Tomcat. Tapestry ist seit 2006 ein Toplevel-Projekt der Apache Software Foundation.[4]

Tapestry-Anwendungen bestehen aus Seiten, wobei eine Seite aus wiederverwendbaren und konfigurierbaren Komponenten besteht. Komponenten wiederum können 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 können sowohl HTML-Tags als auch spezifische Tapestry-Tags für den dynamischen Inhalt verwendet werden. Diese Tapestry-Tags werden über 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 können entweder über ein vorgegebenes Namensschema oder über eine Annotation festgelegt werden. Die beiden im Folgenden aufgeführten Methoden würden so beispielsweise auf das Auslösen 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 ähnelt 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 für mit einem der beiden Frameworks erfahrenen Entwickler aufgrund der Ähnlichkeiten reibungslos vonstattengehen.

Besondere Features

Live Class Reloading
Tapestry überwacht im Entwicklungsmodus alle Dateien und übernimmt Änderungen an Seiten, Komponenten, Service-Implementierungen sowie HTML Templates und Properties Dateien automatisch. Dadurch lässt sich die Produktivität von Entwicklern deutlich steigern, da die Anwendung nicht nach jeder Änderung 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 lässt 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 möglichst 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. Darüber hinaus funktionieren die Vor- und Zurück-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, ähnlich Google Guice. Es wurde jedoch mit dem Ziel entwickelt, alle Teile einer Anwendung ersetzbar und konfigurierbar zu machen und kann auch außerhalb von Webanwendungen verwendet werden.[7] Tapestry IoC kann gegebenenfalls auch durch Spring IoC ersetzt werden.[10]

Vorteile

Tapestry ist dazu gedacht, die Entwicklung von Java-Web-Anwendungen zu vereinfachen. Das Framework wurde so entworfen, dass es einfacher möglich ist, robuste Anwendungen zu erzeugen, die wiederum einfacher zu installieren, zu debuggen und zu warten sind als herkömmliche Servlet-Anwendungen. Es nimmt dem Entwickler die Sorgen über Multithreading ab. Durch die klare Trennung von HTML- und Anwendungscode können Java- und HTML-Entwickler gemeinsam an einem Projekt arbeiten. Tapestry unterstützt darüber hinaus die Internationalisierung von Anwendungen sowie die Validierung von Benutzereingaben und bietet eine Reihe von vorgefertigten GUI-Komponenten wie Kalender, sortierbare Tabellen und Bäume. Der Funktionsumfang kann über das Erstellen eigener Komponenten erweitert werden.

Ein weiterer Vorteil von Tapestry ist die Tatsache, dass Java-Klassen zu Webseiten gewöhnlich einfache POJOs sind. Es ist also nicht nötig, von Superklassen zu erben oder vorgeschriebene Interfaces zu implementieren. Dafür werden Annotations verwendet, mit denen die Vererbung indirekt hergestellt wird. Ohne projektfremde Imports kommt auch Tapestry nicht aus.

Rewinding (nur bis Tapestry 4.x)

In Tapestry bis zur Version 4 findet die Übertragung 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 schließlich die dritte Phase, indem er die Submit-Schaltfläche betätigt.

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 Betätigen der Submit-Schaltfläche angestoßen.

In diesem Zyklus muss Tapestry die folgenden Aktionen ausführen:

  • 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 zuzuweisen

Da in Tapestry die Zuordnung der Properties zu den Eingabefeldern während des Rendering erfolgt, nutzt Tapestry eine ungewöhnliche 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 ausgeführt. 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 abgelöst, diese beinhalten nun die Information die für die Submit Verarbeitung notwendig sind.

Beispiele

Eine einfache Tapestry-Webseite

Im Folgenden ist eine einfache Tapestry-Webseite aufgeführt. Innerhalb dieser Seite wird ein globales Layout (t:layout) verwendet. Dieses hat den Parameter title. Um die Internationalisierung der Seite zu gewährleisten, wird in der Seitenbeschreibung nicht explizit der gewünschte Titel, sondern ein Key für die jeweilige Übersetzungsdatei angegeben. Je nach gewählter Sprache wird die Variable ${message:title} nun durch einen beliebigen Text ersetzt. Dieser wird in der zur Seite gehörigen properties-Datei festgelegt.

Darüber hinaus wird hier ein einfacher Tapestry-Pagelink auf die Index-Seite eingesetzt.

Die eigentliche Webseite About.tml

<t:layout title="${message:title}"
      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
      xmlns:p="tapestry:parameter">

    <p>${message:text}</p>

    <t:pagelink page="index">${message:index}</t:pagelink>
</t:layout>

Die zugehörige 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

Mehrfach verwendeter Code kann in einzelne Komponenten ausgegliedert werden. Diese bestehen normalerweise wie eine gewöhnliche Webseite aus einer Java-Klasse, einer TML-Datei und den zugehörigen Übersetzungen.

Die hier aufgeführte Komponente enthält einen Parameter und erstellt für diesen einen Link mit zugehörigen Text.

<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
    <t:pagelink page=${targetPage}>Link auf die Seite ${targetPage}</t:pagelink>
</t:container>

Die zugehörige Java-Klasse:

public class myPageLink{

   @Parameter(defaultPrefix = "literal")
   @Property
   private String targetPage;

}

Einsatz der Komponente:

<t:myPageLink targetPage="index"/>

Einzelnachweise

  1. books.google.at.
  2. a b projects.apache.org. (abgerufen am 8. April 2020).
  3. Download.
  4. tapestryjava.blogspot.de
  5. tapestry.apache.org
  6. Drobiazko, 2012, S. 20
  7. a b Drobiazko, 2012, S. 7
  8. tapestry.apache.org
  9. tapestry.apache.org
  10. tapestry.apache.org

Read other articles:

State private university in Uttar Pradesh Babu Banarasi Das UniversityOther nameBBD UniversityTypePrivateEstablished2010; 14 years ago (2010)FounderAkhilesh DasChancellorAlka DasVice-ChancellorArun Kumar MittalStudents20000+LocationBBD City, Lucknow, Uttar Pradesh, India26°53′16″N 81°03′24″E / 26.887902°N 81.056627°E / 26.887902; 81.056627CampusUrban, 100 acres (40 ha)Colours   Red and blueAffiliationsUGCWebsitebbdu.ac.in Ma...

 

Not to be confused with 2020 United States House of Representatives elections in Iowa. 2020 Iowa House of Representatives election ← 2018 November 3, 2020 2022 → All 100 seats in the Iowa House of Representatives51 seats needed for a majority   Majority party Minority party   Leader Linda Upmeyer(retired) Todd Prichard Party Republican Democratic Leader since January 14, 2016 January 14, 2019 Leader's seat 54th district 52nd district Last electi...

 

  لمعانٍ أخرى، طالع روبرت ويلسون (توضيح). روبرت ويلسون معلومات شخصية الميلاد 16 مايو 1937 (87 سنة)  جنيفا  مواطنة الولايات المتحدة  عضو في الأكاديمية الوطنية للعلوم[1]،  والأكاديمية الأمريكية للفنون والعلوم[2]،  وجمعية الاقتصاد القياسي  [لغات أخرى]&#...

2012 United States House of Representatives elections in Minnesota ← 2010 November 6, 2012 (2012-11-06) 2014 → All 8 Minnesota seats to the United States House of Representatives   Majority party Minority party   Party Democratic (DFL) Republican Last election 4 4 Seats won 5 3 Seat change 1 1 Popular vote 1,560,984 1,210,409 Percentage 55.48% 43.02% Swing 7.55% 3.41% Results by percentage Results by seats gained Democratic &...

 

Robert DonatDonat pada tahun 1940 Aktor Terbaik (Oscar) ke-12Masa jabatan1939 (untuk film Goodbye, Mr. Chips) PendahuluSpencer TracyPenggantiJames Stewart Informasi pribadiLahirFriedrich Robert Donat(1905-03-18)18 Maret 1905Withington, Manchester, EnglandMeninggal9 Juni 1958(1958-06-09) (umur 53)London, EnglandSuami/istriElla Annesley Voysey (1929–1946) Renée Asherson (1953–1958)PekerjaanActorSunting kotak info • L • B Friedrich Robert Donath (18 Maret 1905-9 Juni 1958...

 

Turkish public university located in Mersin Mersin UniversityMersin ÜniversitesiMottoA world university in the light of science and modernityTypePublic universityEstablishedJuly 3, 1992RectorProf. Dr.Erol Yaşar[1]Academic staff1405Administrative staff866Students26,644LocationMersin, TurkeyColorsUltramarine & orange    Websitemersin.edu.tr Mersin University (Turkish: Mersin Üniversitesi) is a public university, built in 1992 in Mersin Province, Turkey. It has about 39,...

هذه المقالة عن المجموعة العرقية الأتراك وليس عن من يحملون جنسية الجمهورية التركية أتراكTürkler (بالتركية) التعداد الكليالتعداد 70~83 مليون نسمةمناطق الوجود المميزةالبلد  القائمة ... تركياألمانياسورياالعراقبلغارياالولايات المتحدةفرنساالمملكة المتحدةهولنداالنمساأسترالي�...

 

Schleswig-HolsteinNegara bagian BenderaLambang kebesaranKoordinat: 54°28′12″N 9°30′50″E / 54.47000°N 9.51389°E / 54.47000; 9.51389NegaraJermanIbu kotaKielPemerintahan • BadanLandtag of Schleswig-Holstein • Presiden MenteriDaniel Günther (CDU) • Governing partiesCDU / Hijau / FDP • Bundesrat4 (dari 69)Luas • Total15.763,18 km2 (608,620 sq mi)Populasi (31 Desember 2017)[1]...

 

  هذه المقالة عن الوزارة الأولى. لمعانٍ أخرى، طالع رئيس الجمهورية الجزائرية. الوزارة الأولى شاغل المنصب نذير العرباوي منذ 11 نوفمبر 2023 البلد الجزائر  عن المنصب مقر الإقامة الرسمي شارع الدكتور سعدان، قصر الحكومة، الجزائر العاصمة  الجزائر المعين رئيس الجمهورية الج...

Эту страницу предлагается объединить со страницей Безналичное общество.Пояснение причин и обсуждение — на странице Википедия:К объединению/20 февраля 2022.Обсуждение длится не менее недели (подробнее). Не удаляйте шаблон до подведения итога обсуждения. Безналичные расче�...

 

2020 American resupply spaceflight to the ISS SpaceX CRS-20C112 approaches the ISSNamesCRS-20SpaceX-20Mission typeISS resupplyOperatorSpaceXCOSPAR ID2020-016A SATCAT no.45341Mission duration31 days, 13 hours, 59 minutes Spacecraft propertiesSpacecraftDragon C112.3Spacecraft typeDragon CRSManufacturerSpaceXDry mass4200 kgDimensionsHeight: 6.1 metreDiameter: 3.7 metre Start of missionLaunch date7 March 2020, 04:50:31 UTC [1][2]RocketFalcon 9Launch siteCape Canaver...

 

Paris JacksonLahirParis-Michael Katherine Jackson3 April 1998 (umur 26)Beverly Hills, California, Amerika SerikatPekerjaanModelaktrismusisi[1]Tahun aktif2003–kiniInformasi modelingTinggi176 m (577 ft 5 in)Warna rambutCoklatWarna mataBiru-kehijauanManajerIMG Models (New York, Paris, Milan, London, Sydney)[2] Orang tuaMichael JacksonDebbie RoweKeluargaJackson Paris-Michael Katherine Jackson (lahir 3 April 1998) adalah seorang model,[3][4&#...

Scientific study of celestial objects This article is about the scientific study of celestial objects. For other uses, see Astronomy (disambiguation). Not to be confused with astrology, a pseudoscience. The Paranal Observatory of European Southern Observatory shooting a laser guide star to the Galactic Center Astronomy is a natural science that studies celestial objects and the phenomena that occur in the cosmos. It uses mathematics, physics, and chemistry in order to explain their origin and...

 

Andre Carson André D. Carson (lahir 16 Oktober 1974) adalah seorang anggota DPR Amerika Serikat. Ia adalah anggota Partai Demokrat. Ia adalah cucu dari pendahulunya, mantan anggota DPR AS Julia Carson (1938–2007).[1][2] Carson adalah Muslim kedua yang terpilih dalam Kongres Amerika Serikat, setelah Keith Ellison dari Minnesota pada 2006. Referensi ^ Carson sworn in as congressman for 7th District. Indystar.com. Associated Press. March 13, 2008. Diakses tanggal December 6, 2...

 

Ini adalah nama orang Bugis, nama keluarganya adalah Lalogau Muhammad Yusran Lalogau Bupati Pangkajene dan Kepulauan ke-11PetahanaMulai menjabat 26 Februari 2021PresidenJoko WidodoGubernurNurdin Abdullah Andi Sudirman Sulaiman Bahtiar Baharuddin (Pj.)WakilSyahban SammanaPendahuluSyamsuddin A. HamidPenggantiPetahanaKetua Dewan Perwakilan Rakyat Daerah Kabupaten Pangkajene dan KepulauanMasa jabatan21 Oktober 2019 – 3 September 2020PresidenJoko WidodoGubernurNurdin AbdullahPen...

Medication TirbanibulinClinical dataTrade namesKlisyri, OnaktaOther namesKX2-391AHFS/Drugs.comMonographLicense data US DailyMed: Tirbanibulin Pregnancycategory AU: D[1] Routes ofadministrationTopicalDrug classMicrotubule inhibitorATC codeD06BX03 (WHO) Legal statusLegal status AU: S4 (Prescription only)[1] CA: ℞-only[2][3] US: ℞-only[4][5] EU: Rx-only[6] Identifiers IUPAC name N-benzyl-2-[...

 

Extinct genus of fishes LeedsichthysTemporal range: Callovian-Tithonian~165–152 Ma PreꞒ Ꞓ O S D C P T J K Pg N Fossil tail fin from the Natural History Museum, London Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Actinopterygii Order: †Pachycormiformes Family: †Pachycormidae Genus: †LeedsichthysWoodward, 1889 Type species Leedsichthys problematicusWoodward, 1889 Species ?L. notocetes Martill et al., 1999 Leedsichthys is an extinct genus...

 

Ire législature de la Cinquième République française 9 décembre 1958 - 9 octobre 19623 ans et 10 mois Assemblée nationale Composition FAEAS (66) UNR (206) IPAS (117) RPCD (64) NI (36) FANI (40) SOC (47) Président Jacques Chaban-Delmas (UNR)9 décembre 1958-20 juin 1969 Élections 23 et 30 novembre 1958 Sénat Président Gaston Monnerville (RAD)9 décembre 1958-3 octobre 1968 Élections Gouvernement Parti(s) UNR - MRP - CNIP - RAD (1959-1962) UNR - CNIP - UDT (dès 1962) Gouv...

Stasiun Shinano-Tokiwa信濃常盤駅Stasiun Shinano-Tokiwa pada 2009LokasiTokiwa-Shimoippongi, Ōmachi-shi, Nagano-ken 398-0004 JepangKoordinat36°28′02″N 137°50′49″E / 36.4673°N 137.8469°E / 36.4673; 137.8469Ketinggian681.6 meters[1]Operator JR EastJalur■ Jalur ŌitoLetak30.9 km dari MatsumotoJumlah peron2 peron sisiJumlah jalur2Informasi lainStatusUnstaffedKode stasiun25Situs webSitus web resmiSejarahDibuka2 November 1915Nama sebelumnyaStas...

 

English footballer (born 1961) Debbie BamptonMBE Personal informationFull name Deborah BamptonDate of birth (1961-10-07) 7 October 1961 (age 62)Place of birth EnglandPosition(s) MidfielderYouth career BarnfieldSenior career*Years Team Apps (Gls)?–1981 Maidstone 1981–1982/3 Lowestoft Ladies 1983–1985 Howbury Grange 1985–1986 Millwall Lionesses 1987–1988 Despar Trani 80 1988–1991 Millwall Lionesses 1991–1992 Wimbledon 1992–1994 Arsenal 1994–2000 Croydon 2000 Doncaster Bel...