2010-10-10 11 views
13

W grze zawsze podążasz za Redirect-After-Post-Pattern, jeśli zadzwonisz z publicznej metody kontrolera. Jest to w większości przypadków dobre zachowanie, ale czasami może być nieprzyjemne. Więc próbowałem dowiedzieć się, jak to działa w grze 1.1 !: Podstawowym jest pewne ulepszenie kodu bajtowego, które jest wykonywane w play.classloading.enhancers.ControllersEnhancer. Może się okazać, że wciąż istnieje pewne wyjątki domyślnego zachowania:Jak mogę wpływać na zachowanie przekierowania w kontrolerze gry?

  1. Jeśli metoda jest odnotowany przez adnotacją z pakietu play.mvc, na przykład adnotacji wcześniej nie.
  2. Opisujesz swoją czynność za pomocą ByPass -Annotacja, ta adnotacja musi być wewnętrzną klasą, więc jej nazwa kończy się na $ByPass.

Oba rozwiązania są dobre, jeśli zawsze chcesz tłumić przekierowanie. Ale co, jeśli chcesz zrobić to tylko w wyjątkowej sytuacji? Następnie możesz zadzwonić pod numer ControllerInstrumentation.initActionCall().

Nie znajduję opisu, po prostu analizuję kod. Czy moje wnioski są prawidłowe lub mają jakieś wady?

+0

initActionCall jest rzeczywiście przydatny, jeśli potrzebujesz wywołać inny widok, ale nie chcesz przekierowywać: http://groups.google.com/group/play-framework/browse_thread/thread/59c2aebefb94aac5/62651072b74275e1?lnk=gst&q=redirect # 3f5ccb63d4652565 – Stefano

Odpowiedz

2

Z tego co wiem, twoje założenia są poprawne.

To powiedziawszy, z tego co rozumiem, chcesz metodę, która kończy się po wykonaniu i nic nie zwraca? Nie dodawaj żadnego wywołania "render" na końcu (lub jakiegokolwiek wywołania innej metody), które powinno działać. Używam go do zadań cron.