2009-06-22 7 views

Antwort

4

könnten Sie Prototype verwenden PeriodicalExecuter, und haben die Tapisserie des ZoneManager rufen Sie die Zone zu aktualisieren:

new PeriodicalExecuter(function(pe) { 
    var zoneObject = Tapestry.findZoneManager(element); 
    zoneObject.updateFromUrl(updateUrl); 
}, 5); 
+0

typeo "PeriodicalExecutor" -> "PeriodicalExecuter" – pstanton

+0

@ pstanton: Alle behoben. – Henning

3

Zunächst müssen Sie die URL für Ihre Event-Handler entlarven:

public String getModeChangedUrl() 
{ 
    // will call the onModeChanged method 
    return resources.createEventLink("ModeChanged").toAbsoluteURI(); 
} 

Dann weisen Sie in einem JavaScript-Block in Ihrem tml die URL einer Variablen zu:

Dann brauchen Sie einen Handle zu einem ZoneManager erhalten JavaScript-Objekt:

var zm = Tapestry.findZoneManagerForZone(zoneId); 

Es ist nicht wichtig, welche Zone Sie die ZoneManager erhalten für all dies ist nicht die Ajax-Rückruf zu erleichtern. Wenn der Ereignis-Listener ein MultiZoneUpdate oder ein Update für eine andere Zone zurückgibt, wird es korrekt verarbeitet.

Ich verwende eine Dummy-Zone zum Marshalling und gebe immer ein MultiZoneUpdate zurück, auch wenn ich nur eine Zone aktualisiere. Da ich oft mehrere Zonen aktualisieren muss, finde ich es einfacher, in meinem Ansatz konsistent zu sein. Wie auch immer, das ist ein wenig off-topic für deine Frage.

wenn Sie zusätzliche Parameter für die Ereignishandler haben, können Sie sie an den durch ‚/‘ dh „http://www.host.com/app/page/event/param1/param2“

getrennt url anhängen

jetzt, dass Sie die url und ein ZoneManager haben, können Sie die Anfrage-Antwort-Schleife initialisieren:

zm.updateFromURL(url); 

wie vorgeschlagen HENNING, diese Kombination mit dem PeriodicalExecuter in Prototyp wird erreichen, was Sie wollen:

new PeriodicalExecuter(function(pe) 
    { 
     var zm = Tapestry.findZoneManagerForZone("anyZoneId"); 
     zm.updateFromUrl(url); 
    }, 5); 
+0

Dies hat sich seit T5.2 etwas geändert. MultiZoneUpdate gehört der Vergangenheit an. das clientseitige Zeug ist jedoch weitgehend das Gleiche. – pstanton

Verwandte Themen