Как я могу влиять на поведение перенаправления в игровом контроллере?

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

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

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

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

Ответы

Ответ 1

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

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