📜  Apache Tapestry-内置组件

📅  最后修改于: 2020-10-27 03:06:06             🧑  作者: Mango


本章通过适当的示例说明Tapestry拥有的内置组件。 Tapestry支持65个以上的内置组件。您还可以创建自定义组件。让我们详细介绍一些值得注意的组件。

如果组件

if组件用于有条件地渲染块。通过测试参数检查条件。

创建一个页面IfSample.java ,如下所示-

package com.example.MyFirstApplication.pages;  

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

现在,创建一个对应的模板文件,如下所示:

If-else component example

Hello ${user}

You are not a Tapestry user

请求页面将呈现结果,如下所示。

结果-http:// localhost:8080 / MyFirstApplication / ifsample

如果分量结果

除非和委托组件

除非组件与上面讨论的if组件恰好相反。同时,委托组件不会自行进行任何渲染。相反,它通常将标记委托给block元素。除非且是否组件可以使用委托和阻止有条件地交换动态内容。

如下创建一个页面,除非.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; 
      } 
   }   
} 

现在,创建一个对应的模板文件,如下所示:

Delegate component

If-Unless component

bool == Boolean.TRUE. bool = Boolean.FALSE. bool == Boolean.FALSE.

请求页面将呈现结果,如下所示。

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

This is sample parameter rendering example...

  1. ${var:i}

循环组件具有以下两个参数-

  • -收集源。 1…5是用于创建具有指定范围的数组的属性扩展。

  • var-渲染变量。用于在模板主体中呈现当前值。

请求页面将呈现结果,如下所示-

循环组件

PageLink组件

PageLink组件用于将页面从一页链接到另一页。创建如下的PageLink测试页-PageLink.java

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

然后,创建相应的模板文件,如下所示-

PageLink.tml

Page Link

Click here to navigate Index page

PageLink组件具有一个page参数,该参数应引用目标挂毯页面。

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

Event link example

AddedCount = ${x}.
Click here to add count

EventLink具有以下两个参数-

  • 事件-EventLink组件中要触发的事件的名称。默认情况下,它指向组件的ID。

  • 上下文-这是一个可选参数。它定义了链接的上下文。

结果-http:// localhost:8080 / myFirstApplication / EventsLink

活动链接

单击计数值后,页面将在URL中显示事件名称,如以下输出屏幕截图所示。

事件链接结果

ActionLink组件

ActionLink组件类似于EventLink组件,但它仅发送目标组件ID。默认事件名称是action。

创建一个页面“ 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

Count = ${count}.
Decrement

在这里,单击ActionLink组件时将调用OnActionFromSub方法。

结果-http:// localhost:8080 / myFirstApplication / ActivationsLink

动作链接

警报组件

警报对话框通常用于向用户发出警告消息。例如,如果输入字段需要一些必填文本,但用户未提供任何输入,则作为验证的一部分,您可以使用警报框发出警告消息。

创建一个页面“ Alerts”,如以下程序所示。

Alerts.java

package com.example.MyFirstApplication.pages;  

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

然后,如下创建相应的模板文件-

Alerts.tml

Alerts

Welcome ${user}

警报具有三个严重性级别,分别是-

  • 信息
  • 警告
  • 错误

上面的模板是使用信息警报创建的。它定义为alert-info 。您可以根据需要创建其他严重级别。

请求页面将产生以下结果-

http:// localhost:8080 / myFirstApplication / Alerts

快讯