2010-10-10 4 views
13

In gioco si segue sempre lo Redirect-After-Post-Pattern se si chiama da un metodo pubblico di un controller. Questo è nella maggior parte dei casi un buon comportamento, ma a volte potrebbe essere sgradevole. Così ho provato a scoprire come funziona in gioco 1.1 !: Il basic è un miglioramento del codice byte, che è fatto in play.classloading.enhancers.ControllersEnhancer. Vi si possono trovare che esiste ancora qualche eccezione del comportamento di default:Come posso influenzare il comportamento di reindirizzamento in un controller di gioco?

  1. Se il metodo è annotato da un'annotazione dal pacchetto play.mvc, ad esempio, l'annotazione Prima-.
  2. Annoti la tua azione con lo ByPass -Annotazione, questa annotazione deve essere una inner-class quindi il nome termina con $ByPass.

Entrambe le soluzioni vanno bene se si desidera eliminare il reindirizzamento. Ma cosa succede se si desidera solo farlo in una situazione speciale? Quindi è possibile chiamare ControllerInstrumentation.initActionCall().

Non trovo una descrizione, analizzo solo il codice. Quindi le mie conclusioni sono corrette o hanno degli svantaggi?

+0

initActionCall è davvero utile se devi chiamare un'altra vista ma non vuoi reindirizzare: http://groups.google.com/group/play-framework/browse_thread/thread/59c2aebefb94aac5/62651072b74275e1?lnk=gst&q=redirect # 3f5ccb63d4652565 – Stefano

risposta

2

Per quello che so, le ipotesi sono corrette.

Detto questo, per quello che capisco vuoi un metodo che termini dopo l'esecuzione e non restituisca nulla? Non aggiungere alcuna chiamata "rendering" alla fine (o qualsiasi chiamata a un altro metodo) e dovrebbe funzionare. Lo uso per i lavori cron.

Problemi correlati