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