2011-09-28 3 views
9

C'è qualche differenza significativa tra i tag f:ajax e a4j:ajax?C'è qualche differenza tra f: ajax e a4j: ajax?

che so di a4j: ajax dal RichFaces 4 si basa su f origini: ajax tag JSF2 l'aggiunta di alcuni attributi non trovato in F: Ajax come onbegin, onbeforedoupdate, bypassUpdates, limitRender, status e focus ma quale usare quando ho solo bisogno di inviare una semplice richiesta Ajax o rendering parziale? Ci sono problemi di prestazioni tra f: ajax e a4j: ajax?

risposta

14

Il tag <a4j:ajax> è la forma più comoda del tag base <f:ajax>. È possibile trovare una buona panoramica di tutte le differenze in this page.

L'attributo execute supporta un valore @region aggiuntivo che punta allo <a4j:region>. Qualsiasi EL negli attributi execute e render viene risolto nella richiesta corrente anziché nella richiesta iniziale.

La funzione JS dell'attributo onevent di entrambi i tag verrà richiamato 3 volte (passata in data.status ha allora i valori begin, complete, success). Questo ti obbliga a usare un switch o if quando sei interessato solo a uno di loro o vuoi trattarli in modo diverso. Lo <a4j:ajax> lo rende più conveniente con gli attributi onbegin, onbeforedomupdate e oncomplete rispettivamente. Vedi anche questa domanda correlata: JSF 2: How show different ajax status in same input?

Se non si è interessati a nessuno di questi miglioramenti, quindi utilizzare <f:ajax> dovrebbe essere perfettamente bene pure. La differenza di prestazioni è (e deve essere) totalmente trascurabile e non è la ragione per scegliere l'una rispetto all'altra.