Учебники

Apache Tapestry — Встроенные компоненты

В этой главе рассказывается о встроенных компонентах Tapestry на подходящих примерах. Гобелен поддерживает более 65 встроенных компонентов. Вы также можете создавать собственные компоненты. Давайте рассмотрим некоторые известные компоненты в деталях.

Если компонент

Компонент if используется для условной визуализации блока. Условие проверяется тестовым параметром.

Создайте страницу IfSample.java, как показано ниже —

package com.example.MyFirstApplication.pages;  

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

Теперь создайте соответствующий файл шаблона следующим образом:

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

Запрос страницы отобразит результат, как показано ниже.

Результат — http: // localhost: 8080 / MyFirstApplication / ifsample

Если компонент результат

Если и делегировать компонент

Компонент Тогда — просто противоположность компонента if, который обсуждался выше. Хотя компонент делегата не выполняет никакого рендеринга сам по себе. Вместо этого он обычно делегирует разметку для блокирования элемента. Если и если компоненты не могут использовать делегировать и блокировать для условного обмена динамического содержимого.

Создайте страницу Unless.java следующим образом.

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; 
      } 
   }   
} 

Теперь создайте соответствующий файл шаблона следующим образом:

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

Запрос страницы отобразит результат, как показано ниже.

Результат — http: // localhost: 8080 / MyFirstApplication /, если

Компонент делегата

Петля компонент

Компонент цикла является основным компонентом для циклического перемещения по элементам коллекции и визуализации тела для каждого значения / итерации.

Создайте страницу Loop, как показано ниже —

Loop.java

package com.example.MyFirstApplication.pages;  

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

Затем создайте соответствующий шаблон 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>

Компонент Loop имеет следующие два параметра —

  • источник — источник коллекции. 1… 5 — расширение свойства, используемое для создания массива с указанным диапазоном.

  • var — переменная рендеринга. Используется для отображения текущего значения в теле шаблона.

источник — источник коллекции. 1… 5 — расширение свойства, используемое для создания массива с указанным диапазоном.

var — переменная рендеринга. Используется для отображения текущего значения в теле шаблона.

Запрос страницы выдаст результат, как показано ниже —

Петля компонент

Компонент PageLink

Компонент PageLink используется для связи страницы с одной страницы на другую. Создайте тестовую страницу PageLink, как показано ниже — PageLink.java .

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

Затем создайте соответствующий файл шаблона, как показано ниже —

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>

Компонент PageLink имеет параметр страницы, который должен ссылаться на целевую страницу гобелена.

Результат — http: // localhost: 8080 / myFirstApplication / pagelink

Ссылка на страницу

Компонент EventLink

Компонент EventLink отправляет имя события и соответствующий параметр через URL. Создайте класс страницы EventsLink, как показано ниже.

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; 
   }   
}

Затем создайте соответствующий файл шаблона «EventsLink» следующим образом:

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 имеет следующие два параметра —

  • Событие — имя события, которое должно быть запущено в компоненте EventLink. По умолчанию он указывает на идентификатор компонента.

  • Контекст — это необязательный параметр. Он определяет контекст для ссылки.

Событие — имя события, которое должно быть запущено в компоненте EventLink. По умолчанию он указывает на идентификатор компонента.

Контекст — это необязательный параметр. Он определяет контекст для ссылки.

Результат — http: // localhost: 8080 / myFirstApplication / EventsLink

Ссылка на событие

После нажатия значения счетчика на странице отобразится имя события в URL-адресе, как показано на следующем выходном снимке экрана.

Событие Ссылка Результат

Компонент ActionLink

Компонент ActionLink аналогичен компоненту EventLink, но он отправляет только идентификатор целевого компонента. Имя события по умолчанию — действие.

Создайте страницу «ActivationLinks.java», как показано ниже,

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; 
   } 
} 

Теперь создайте соответствующий файл шаблона, как показано ниже —

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> 

Здесь метод OnActionFromSub будет вызываться при щелчке компонента ActionLink.

Результат — http: // localhost: 8080 / myFirstApplication / ActivationsLink

Действие Ссылка

Компонент оповещения

Диалоговое окно предупреждения в основном используется для выдачи предупреждающего сообщения пользователям. Например, если для поля ввода требуется обязательный текст, но пользователь не вводит никаких данных, в качестве части проверки вы можете использовать окно предупреждения для выдачи предупреждающего сообщения.

Создайте страницу «Оповещения», как показано в следующей программе.

Alerts.java

package com.example.MyFirstApplication.pages;  

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

Затем создайте соответствующий файл шаблона следующим образом:

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>

Оповещение имеет три уровня серьезности, которые:

  • Информация
  • предостерегать
  • ошибка

Приведенный выше шаблон создан с использованием информационного оповещения. Это определяется как alert-info . Вы можете создавать другие уровни серьезности в зависимости от необходимости.

Запрос страницы даст следующий результат —

HTTP: // локальный: 8080 / myFirstApplication / Alerts