Qual è il modo migliore per aggiornare una zona Tapestry su base regolare per estrarre le modifiche di un set di dati da un server?Aggiornamento di una zona Tapestry su base regolare
risposta
Si potrebbe utilizzare Prototype di PeriodicalExecuter, e che hanno chiamano ZoneManager di Tapestry per aggiornare la zona:
new PeriodicalExecuter(function(pe) {
var zoneObject = Tapestry.findZoneManager(element);
zoneObject.updateFromUrl(updateUrl);
}, 5);
In primo luogo, è necessario esporre l'URL per il gestore di eventi:
public String getModeChangedUrl()
{
// will call the onModeChanged method
return resources.createEventLink("ModeChanged").toAbsoluteURI();
}
Quindi, in un blocco javascript nel tuo tml, assegna l'url a una variabile:
var modeChangedUrl = "${modeChangedUrl}";
allora avete bisogno di ottenere un handle a uno ZoneManager javascript oggetto:
var zm = Tapestry.findZoneManagerForZone(zoneId);
Non è importante quale zona si ottiene la ZoneManager per, tutto questo non fa altro facilitare il callback ajax. Se il listener di eventi restituisce un MultiZoneUpdate o un aggiornamento per una zona diversa, verrà gestito correttamente.
Io uso una zona fittizia per il marshalling e restituisco sempre un MultiZoneUpdate anche se sto aggiornando solo una zona. Dato che il più delle volte ho bisogno di aggiornare più zone, trovo più facile essere coerenti nel mio approccio. comunque, questo è un po 'fuori tema per la tua domanda.
se si dispone di parametri aggiuntivi per il gestore di eventi, è possibile accodare all'URL separati da '/' vale a dire "http://www.host.com/app/page/event/param1/param2"
ora che avete la url
e ZoneManager
, è possibile inizializzare il ciclo di richiesta-risposta:
zm.updateFromURL(url);
come Henning suggerito, combinando questo con la PeriodicalExecuter nel prototipo sarà ottenere quello che vuoi:
new PeriodicalExecuter(function(pe)
{
var zm = Tapestry.findZoneManagerForZone("anyZoneId");
zm.updateFromUrl(url);
}, 5);
questo è leggermente cambiato da T5.2. MultiZoneUpdate è una cosa del passato. la roba lato client è in gran parte lo stesso però. – pstanton
- 1. Tempo di aggiornamento Android dati della zona
- 2. Tapestry + REST
- 3. Che cos'è una 'zona' MsgPack
- 4. Blog zona di posizionamento
- 5. MVC3 - con una vista parziale in una zona diversa
- 6. Tapestry Web App su Tomcat sputa occasionalmente spazzatura
- 7. Come funziona esattamente il mixino di Tapestry?
- 8. Zona di disponibilità di Heroku
- 9. Come applicare "filtro" in base all'espressione regolare?
- 10. Come migrare da Tapestry 4 a 5?
- 11. aggiornamento mysql una colonna con un int in base all'ordine
- 12. Aggiornamento degli indirizzi di posta elettronica in MySQL (espressione regolare?)
- 13. Utilizzando zona di lancio per XAMPP
- 14. Reindirizza dall'azione di una zona a un'azione nella "radice" -area?
- 15. UI di aggiornamento su dispatch_get_main_queue()
- 16. crea una nuova variabile basata su un'espressione regolare
- 17. waypoint di aggiornamento su directions_changed
- 18. Aggiornamento sottoinsieme di data.table sulla base di unirsi
- 19. La "zona visibile" di un controllo?
- 20. Aggiornamento di Python su Mac
- 21. Come può uno script di shell sapere che viene eseguito in una zona Solaris?
- 22. Aggiornamento di una singola colonna in LINQ su SQL
- 23. Espressione regolare su spazio voxel
- 24. corrispondenza regolare su R gregexpr
- 25. percorsi registrarsi in registrazione zona
- 26. Ridimensionamento della zona di rilascio per la distruzione delle bolle
- 27. Asp.net MVC zona 3 di routing fallire
- 28. Genera una stringa casuale basata su un'espressione regolare
- 29. Buone risorse per costruire web-app in Tapestry
- 30. Crittografia di base su Android
BTW, È prevista una funzionalità simile: vedere https://issues.apache.org/jira/browse/TAP5-746 – Sergey