Tapiz Apache - Componente Ajax

AJAX significa Asynchronous JavaScript and XML. Es una técnica para crear aplicaciones web mejores, más rápidas y más interactivas con la ayuda deXML, JSON, HTML, CSS, y JavaScript. AJAX le permite enviar y recibir datos de forma asincrónica sin recargar la página web, por lo que es rápido.

Componente de zona

Un componente de zona se utiliza para proporcionar el contenido (marcado) así como la posición del contenido en sí. Tapestry utiliza internamente el cuerpo del componente de zona para generar el contenido. Una vez generado el contenido dinámico, Tapestry lo enviará al cliente, volverá a procesar los datos en el lugar correcto, activará y animará el HTML para llamar la atención del usuario.

Este componente de zona se utiliza junto con un componente EventLink. Un EventLink tiene la opción de vincularlo a una zona en particular usando elt:zoneatributos. Una vez que la zona está configurada en EventLink, al hacer clic en EventLink se activará la actualización de la zona. Además, los eventos EventLink (refreshZone) se pueden utilizar para controlar la generación de datos dinámicos.

Un ejemplo simple de AJAX es el siguiente:

AjaxZone.tml

<html t:type = "Newlayout" title = "About MyFirstApplication" 
   xmlns:t = "http://tapestry.apache.org/schema/tapestry_5_4.xsd" 
   xmlns:p = "tapestry:parameter">  
   
   <body> 
      <h1>Ajax time zone example</h1>  
      <div class = "div1">  
         <a t:type = "eventlink" t:event = "refreshZone" href = "#" 
            t:zone = "timeZone">Ajax Link </a><br/><br/> 
         <t:zone t:id = "timeZone" id = "timeZone">Time zone: ${serverTime}</t:zone> 
      </div>  
   </body>
   
</html>

AjaxZone.java

package com.example.MyFirstApplication.pages;  

import java.util.Date; 
import org.apache.tapestry5.annotations.InjectComponent; 
import org.apache.tapestry5.corelib.components.Zone; 
import org.apache.tapestry5.ioc.annotations.Inject; 
import org.apache.tapestry5.services.Request;  

public class AjaxZone { 
   @Inject 
   private Request request; 
   
   @InjectComponent 
   private Zone timeZone; 
   
   void onRefreshPage() { 
   } 
   
   Object onRefreshZone() { 
      return request.isXHR() ? timeZone.getBody() : null; 
   } 
   
   public Date getServerTime() { 
      return new Date(); 
   } 
}

El resultado se mostrará en: http: // localhost: 8080 / MyFirstApplication / AjaxZone