Apache Tapestry

Apache Tapestry
Apache Tapestry
Entwickler Apache Software Foundation
Aktuelle Version 5.2.6
(29. Juni 2011)
Aktuelle Vorabversion 5.3.0 Alpha
(24. Juni 2011)
Betriebssystem Plattformunabhängig
Programmier­sprache Java
Kategorie Webframework
Lizenz Apache Lizenz 2.0
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 ein Toplevel-Projekt der Apache Software Foundation.

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 erfahrene Entwickler aufgrund der Ähnlichkeiten reibungslos vonstatten gehen.

Inhaltsverzeichnis

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

In Tapestry 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.

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 angegeben sondern ein Key für die jeweilige Übersetzungsdatei. 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"/>

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Apache Tapestry — Pour les articles homonymes, voir Tapestry. Apache Tapestry Développeur …   Wikipédia en Français

  • Tapestry — Apache Tapestry Тип Веб фреймворк Разработчик Apache Software Foundation Написана на Java Операционная система Кроссплатформенное ПО …   Википедия

  • Tapestry framework — Apache Tapestry Desarrollador Apache Software Foundation http://tapestry.apache.org Información general …   Wikipedia Español

  • Apache Wicket — Entwickler Apache Software Foundation Aktuelle Version 1.5.2 (20. Oktober 2011) …   Deutsch Wikipedia

  • Apache Struts — est un framework libre servant au développement d applications web J2EE. Il utilise et étend l API Servlet Java afin d encourager les développeurs à adopter l architecture Modèle Vue Contrôleur. Apache Struts a été créé par Craig McClanahan et… …   Wikipédia en Français

  • Tapestry — steht für: Apache Tapestry, ein Webframework für die Programmiersprache Java Tapestry (Album), ein Musikalbum von Carole King Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer mit demselben Wort bezeichnete …   Deutsch Wikipedia

  • Tapestry (programming) — Infobox Software name = Apache Tapestry caption = developer = Apache Software Foundation latest release version = 4.1.6 latest release date = 11 September 2008 latest preview version = 5.0.15 latest preview date = 21 September 2008 operating… …   Wikipedia

  • Apache Software Foundation — Pour les articles homonymes, voir Apache (homonymie). Logo de Apache Software Foundation L Apache Software Foundation (Fondation Apache) est une organisation à but non lucratif qui développe des log …   Wikipédia en Français

  • Tapestry —  Pour l’article homonyme, voir Apache Tapestry.  Tapestry (de l anglais : tapisserie) est un protocole P2P utilisant une table de hachage distribuée …   Wikipédia en Français

  • Apache Click — Developer(s) Apache Software Foundation Stable release 2.3.0 / March 27, 2011; 7 months ago (2011 03 27) …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”