Apache Tapisserie - Integrierte Komponenten

In diesem Kapitel werden die in Tapestry integrierten Komponenten anhand geeigneter Beispiele erläutert. Tapisserie unterstützt mehr als 65 integrierte Komponenten. Sie können auch benutzerdefinierte Komponenten erstellen. Lassen Sie uns einige der bemerkenswerten Komponenten im Detail behandeln.

Wenn Komponente

Die if-Komponente wird verwendet, um einen Block bedingt zu rendern. Der Zustand wird durch einen Testparameter überprüft.

Erstelle eine Seite IfSample.java wie unten gezeigt -

package com.example.MyFirstApplication.pages;  

public class Ifsample {
   public String getUser() { 
      return "user1"; 
   } 
}

Erstellen Sie nun eine entsprechende Vorlagendatei wie folgt:

<html t:type = "newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd" 
   xmlns:p = "tapestry:parameter"> 
     
   <h3>If-else component example </h3> 
   <t:if test = "user"> 
      Hello ${user} 
      <p:else>
         <h4> You are not a Tapestry user </h4> 
      </p:else> 
   </t:if> 
</html>

Wenn Sie die Seite anfordern, wird das Ergebnis wie unten gezeigt wiedergegeben.

Result - http: // localhost: 8080 / MyFirstApplication / ifsample

Es sei denn und Komponente delegieren

Das unless componentist genau das Gegenteil der oben diskutierten if-Komponente. Währenddelegate componentmacht kein Rendering alleine. Stattdessen delegiert es normalerweise das Markup an das Blockelement. Es sei denn und wenn Komponenten delegieren und blockieren können, um den dynamischen Inhalt bedingt auszutauschen.

Erstelle eine Seite Unless.java wie folgt.

package com.example.MyFirstApplication.pages;  

import org.apache.tapestry5.Block; 
import org.apache.tapestry5.annotations.Property; 
import org.apache.tapestry5.ioc.annotations.Inject; 
import org.apache.tapestry5.PersistenceConstants; 
import org.apache.tapestry5.annotations.Persist;  

public class Unless { 
   @Property 
   @Persist(PersistenceConstants.FLASH) 
   private String value;  
   @Property 
   private Boolean bool; 
   @Inject 
   Block t, f, n;  
   
   public Block getCase() { 
      if (bool == Boolean.TRUE ) { 
         return t; 
      } else { 
         return f; 
      } 
   }   
}

Erstellen Sie nun eine entsprechende Vorlagendatei wie folgt:

<html t:type = "newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd" 
   xmlns:p = "tapestry:parameter"> 
  
   <h4> Delegate component </h4> 
   <div class = "div1"> 
      <t:delegate to = "case"/> 
   </div> 
   <h4> If-Unless component </h4>  
   
   <div class = "div1"> 
      <t:if test = "bool"> 
         <t:delegate to = "block:t"/> 
      </t:if> 
      <t:unless test = "bool"> 
         <t:delegate to = "block:notT"/> 
      </t:unless> 
   </div>  
   
   <t:block id = "t"> 
      bool == Boolean.TRUE. 
   </t:block> 
   
   <t:block id = "notT"> 
      bool = Boolean.FALSE. 
   </t:block> 
   
   <t:block id = "f"> 
      bool == Boolean.FALSE. 
   </t:block> 
</html>

Wenn Sie die Seite anfordern, wird das Ergebnis wie unten gezeigt wiedergegeben.

Result - http: // localhost: 8080 / MyFirstApplication / es sei denn

Schleifenkomponente

Die Schleifenkomponente ist die Basiskomponente, um eine Sammlung von Elementen zu durchlaufen und den Body für jeden Wert / jede Iteration zu rendern.

Erstellen Sie eine Loop-Seite wie unten gezeigt -

Loop.java

package com.example.MyFirstApplication.pages;  

import org.apache.tapestry5.annotations.Property;  
public class Loop { 
   @Property 
   private int i; 
}

Erstellen Sie dann die entsprechende Vorlage Loop.tml

Loop.tml

<html t:type = "newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd" 
   xmlns:p = "tapestry:parameter">  
   
   <p>This is sample parameter rendering example...</p> 
   <ol>
      <li t:type = "loop" source = "1..5" value = "var:i">${var:i}</li> 
   </ol> 
</html>

Die Schleifenkomponente hat die folgenden zwei Parameter:

  • source- Sammlungsquelle. 1… 5 ist eine Eigenschaftserweiterung, mit der ein Array mit einem bestimmten Bereich erstellt wird.

  • var- Rendervariable. Wird verwendet, um den aktuellen Wert im Hauptteil der Vorlage zu rendern.

Wenn Sie die Seite anfordern, wird das Ergebnis wie folgt angezeigt:

PageLink-Komponente

Eine PageLink-Komponente wird verwendet, um eine Seite von einer Seite zu einer anderen Seite zu verknüpfen. Erstellen Sie eine PageLink-Testseite wie folgt:PageLink.java.

package com.example.MyFirstApplication.pages;  
   public class PageLink { 
}

Erstellen Sie dann eine entsprechende Vorlagendatei wie unten gezeigt -

PageLink.tml

<html t:type = "newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd" 
   xmlns:p = "tapestry:parameter">  
   
   <body> 
      <h3><u>Page Link</u> </h3> 
      <div class = "page"> 
         <t:pagelink page = "Index">Click here to navigate Index page</t:pagelink>
         <br/> 
      </div> 
   </body> 
   
</html>

Die PageLink-Komponente verfügt über einen Seitenparameter, der auf die Zielteppichseite verweisen soll.

Result - http: // localhost: 8080 / myFirstApplication / pagelink

EventLink-Komponente

Die EventLink-Komponente sendet den Ereignisnamen und den entsprechenden Parameter über die URL. Erstellen Sie eine EventsLink-Seitenklasse wie unten gezeigt.

EventsLink.java

package com.example.MyFirstApplication.pages;  

import org.apache.tapestry5.annotations.Property;  
public class EventsLink { 
   @Property 
   private int x; 
   void onActivate(int count) { 
      this.x = x; 
   } 
   int onPassivate() { 
      return x; 
   } 
   void onAdd(int value) { 
      x += value; 
   }   
}

Erstellen Sie dann eine entsprechende "EventsLink" -Vorlagendatei wie folgt:

EventsLink.tml

<html t:type = "newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd" 
   xmlns:p = "tapestry:parameter"> 
   
   <h3> Event link example </h3> 
   AddedCount = ${x}. <br/> 
   <t:eventlink t:event = "add" t:context = "literal:1">
      Click here to add count
   </t:eventlink><br/>  
</html>

EventLink hat die folgenden zwei Parameter:

  • Event- Der Name des Ereignisses, das in der EventLink-Komponente ausgelöst werden soll. Standardmäßig zeigt es auf die ID der Komponente.

  • Context- Dies ist ein optionaler Parameter. Es definiert den Kontext für den Link.

Result - http: // localhost: 8080 / myFirstApplication / EventsLink

Nach dem Klicken auf den Zählwert wird auf der Seite der Ereignisname in der URL angezeigt, wie im folgenden Ausgabe-Screenshot gezeigt.

ActionLink-Komponente

Die ActionLink-Komponente ähnelt der EventLink-Komponente, sendet jedoch nur die Zielkomponenten-ID. Der Standardereignisname ist action.

Erstellen Sie eine Seite "ActivationLinks.java" wie unten gezeigt.

ActivationLinks.java

package com.example.MyFirstApplication.pages;  

import org.apache.tapestry5.annotations.Property;  
public class ActivationLinks {  
   @Property 
   private int x;  
   void onActivate(int count) { 
      this.x = x; 
   }  
   int onPassivate() { 
      return x; 
   } 
   void onActionFromsub(int value) { 
      x -= value; 
   } 
}

Erstellen Sie nun eine entsprechende Vorlagendatei wie unten gezeigt -

ActivationLinks.tml

<html t:type = "Newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd" 
   xmlns:p = "tapestry:parameter">  
   
   <div class = "div1"> 
      Count = ${count}. <br/> 
      <t:actionlink t:id = "sub" t:context = "literal:1">
         Decrement
      </t:actionlink><br/> 
   </div> 
   
</html>

Hier die OnActionFromSub Die Methode wird aufgerufen, wenn Sie auf die ActionLink-Komponente klicken.

Result - http: // localhost: 8080 / myFirstApplication / ActivationsLink

Alarmkomponente

Ein Warndialogfeld wird meistens verwendet, um den Benutzern eine Warnmeldung zu geben. Wenn für das Eingabefeld beispielsweise ein obligatorischer Text erforderlich ist, der Benutzer jedoch keine Eingabe bereitstellt, können Sie im Rahmen der Validierung ein Warnfeld verwenden, um eine Warnmeldung zu geben.

Erstellen Sie eine Seite "Alerts", wie im folgenden Programm gezeigt.

Alerts.java

package com.example.MyFirstApplication.pages;  

public class Alerts { 
   public String getUser() { 
      return "user1"; 
   } 
}

Erstellen Sie dann eine entsprechende Vorlagendatei wie folgt:

Alerts.tml

<html t:type = "Newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd"  
   xmlns:p = "tapestry:parameter">  
   
   <h3>Alerts</h3> 
   <div class = "alert alert-info"> 
      <h5> Welcome ${user} </h5> 
   </div>
   
</html>

Ein Alert hat drei Schweregrade:

  • Info
  • Warn
  • Error

Die obige Vorlage wird mithilfe einer Info-Warnung erstellt. Es ist definiert alsalert-info. Sie können je nach Bedarf andere Schweregrade erstellen.

Das Anfordern der Seite führt zu folgendem Ergebnis:

http://localhost:8080/myFirstApplication/Alerts