iberck
9/9/2015 - 1:32 PM

Tapestry ajax

Tapestry ajax

Ejecutar un método con ajax y actualizar una zona

Ejecuta el método onUpdate() y después actualiza la zona con el resultado devuelto por el mismo método.

<t:eventlink t:event="update" t:zone='zone1'>refresh</t:eventlink>
<t:zone t:id='zone1'>
</t:zone>
@InjectComponent
private Zone zone1;

Object onUpdate() {
    return zone1.getBody();
}

Ejecutar un método con ajax y actualizar una zona (desde javascript)

Ejecuta el método onUpdate() y después actualiza la zona con el resultado devuelto por el mismo método.

$("#button1").click(function() {
    var params = {
        url:'http://localhost:8080/msurvey-web/test:update'
    };
   $("#zone2").tapestryZone("update", params); 
});

<t:zone t:id='zone2' id='zone2'>
</t:zone>
public void Test {
    @Inject private Zone zone2;
    Object onUpdate() {
        return zone2.getBody();
    }
}

Actualizar multiples zonas

<t:zone t:id="zone1" id="zone1">
    ${edad}
</t:zone>
<t:zone t:id='zone2' id='zone2'>
    ${nombre}
    <t:actionlink t:id="refresh" t:zone="zone1">refresh</t:actionlink>
</t:zone>
@Inject
private AjaxResponseRenderer ajaxResponseRenderer;
@InjectComponent
private Zone zone1, zone2;

public String getNombre() {
    return "iberck" + Math.random();
}

public double getEdad() {
    return Math.random();
}

@Log
void onActionFromRefresh() {
    ajaxResponseRenderer.addRender(zone1);
    ajaxResponseRenderer.addRender(zone2);
}

Enviar formulario por ajax

<t:zone t:id="formZone" id="formZone">
    <t:form t:id="ajaxForm" t:zone="^">
    </t:form>
</t:zone>
@InjectComponent
private Zone formZone;
    
Object onSuccess() {
  return formZone.getBody();
}