Tapeçaria Apache - Componente Ajax
AJAX significa Asynchronous JavaScript and XML. É uma técnica para criar aplicativos da web melhores, mais rápidos e mais interativos com a ajuda deXML, JSON, HTML, CSS, e JavaScript. O AJAX permite enviar e receber dados de forma assíncrona, sem recarregar a página da web, por isso é rápido.
Componente de Zona
Um componente de zona é usado para fornecer o conteúdo (marcação), bem como a posição do próprio conteúdo. O corpo do Componente de Zona é usado internamente pela Tapeçaria para gerar o conteúdo. Uma vez que o conteúdo dinâmico é gerado, Tapestry irá enviá-lo ao cliente, renderizar novamente os dados no local correto, acionar e animar o HTML para chamar a atenção do usuário.
Este componente Zone é usado junto com um componente EventLink. Um EventLink tem a opção de vinculá-lo a uma zona específica usando ot:zoneatributos. Assim que a zona for configurada no EventLink, clicar no EventLink irá acionar a atualização da zona. Além disso, os eventos EventLink (refreshZone) podem ser usados para controlar a geração de dados dinâmicos.
Um exemplo simples de AJAX é o seguinte -
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();
}
}
O resultado será mostrado em: http: // localhost: 8080 / MyFirstApplication / AjaxZone