2010-10-10 4 views
13

В игре вы всегда следуете за Redirect-After-Post-Pattern, если вы вызываете из общедоступного метода контроллера. Это в большинстве случаев хорошее поведение, но иногда это может быть неприятно. Итак, я попытался выяснить, как это работает в игре 1.1 !: Базовый - это некоторое увеличение байт-кода, которое выполняется в play.classloading.enhancers.ControllersEnhancer. Там вы можете обнаружить, что по-прежнему существует ряд исключений поведения по умолчанию:Как я могу повлиять на поведение перенаправления в игровом контроллере?

  1. Если ваш метод помечается аннотацией из пакета play.mvc, например, в Before-аннотаций.
  2. Вы комментируете свое действие с помощью ByPass -Интеграция, эта аннотация должна быть внутренним классом, поэтому имя заканчивается с $ByPass.

Оба решения в порядке, если вы всегда хотите подавить перенаправление. Но что, если вы только хотите сделать это в особой ситуации? Затем вы можете позвонить по телефону ControllerInstrumentation.initActionCall().

Я не находил описание об этом, я просто анализирую код. Так ли мое заключение правильное или имеет какие-то недостатки?

+0

initActionCall действительно полезен, если вам нужно вызвать другое представление, но не хотите перенаправлять: http://groups.google.com/group/play-framework/browse_thread/thread/59c2aebefb94aac5/62651072b74275e1?lnk=gst&q=redirect # 3f5ccb63d4652565 – Stefano

ответ

2

Для чего я знаю, что предположения верны.

Это, как я понимаю, вам нужен метод, который заканчивается после выполнения и ничего не возвращает? Не добавляйте в конце никакого вызова «рендеринга» (или любого вызова другого метода), и это должно работать. Я использую его для работы cron.

 Смежные вопросы

  • Нет связанных вопросов^_^