Как я могу влиять на поведение перенаправления в игровом контроллере?
В игре вы всегда следуете Redirect-After-Post-Pattern, если вы вызываете из общедоступного метода контроллера. Это в большинстве случаев хорошее поведение, но иногда это может быть неприятно.
Поэтому я попытался выяснить, как это работает в игре 1.1!:
Базовый - это некоторое улучшение байт-кода, которое выполняется в play.classloading.enhancers.ControllersEnhancer
.
Там вы можете обнаружить, что по-прежнему существуют исключения из поведения по умолчанию:
- Если ваш метод аннотируется аннотацией из пакета
play.mvc
, например, перед аннотацией.
- Вы аннотируете свое действие с помощью
ByPass
-Annotation, эта аннотация должна быть внутренним классом, поэтому имя заканчивается с $ByPass
.
Оба решения хороши, если вы всегда хотите подавить перенаправление. Но что, если вы только хотите сделать это в особой ситуации?
Затем вы можете вызвать ControllerInstrumentation.initActionCall()
.
Я не нахожу описания об этом, я просто анализирую код. Так ли мое заключение правильное или имеет какие-то недостатки?
Ответы
Ответ 1
Для того, что я знаю, ваши предположения верны.
Тем не менее, поскольку я понимаю, что вы хотите метод, который заканчивается после выполнения и ничего не возвращает? Не добавляйте в конце никакого вызова "рендеринга" (или любого вызова другого метода), и это должно работать. Я использую его для работы cron.