Comment puis-je influencer le comportement de redirection dans un contrôleur de jeu?
-
29-09-2019 - |
Question
Dans le jeu vous suivez toujours le Redirect-Après-Post-modèle si vous appelez d'une méthode publique d'un contrôleur. Ceci est dans la plupart des cas, un bon comportement, mais parfois il peut être méchant.
J'ai donc essayé de savoir comment cela fonctionne dans le jeu 1.1 !:
La base est faite byte-code d'amélioration, ce qui se fait dans play.classloading.enhancers.ControllersEnhancer
.
Vous y trouverez qu'il existe encore quelques exceptions du comportement par défaut:
- Si votre méthode est annotées par une annotation de l'emballage
play.mvc
, par exemple l'Avant-annotation. - Vous annoter votre action avec le
ByPass
-Annotation, cette annotation doit être une classe intérieure de sorte que le nom endsWith$ByPass
.
Les deux solutions sont très bien si vous voulez toujours supprimer la redirection. Mais si vous voulez seulement le faire dans une situation particulière?
Ensuite, vous pouvez appeler ControllerInstrumentation.initActionCall()
.
Je ne trouve pas une description à ce sujet, j'analyse juste le code. Sont donc ma conclusion correcte ou avoir les inconvénients des?
La solution
Pour ce que je sais des hypothèses que vous avez raison.
Cela dit, pour ce que je comprends que vous voulez une méthode qui se termine après rien d'exécution et retourne? Ne pas ajouter d'appel « rendu » à la fin (ou un appel à une autre méthode) et qui devrait fonctionner. Je l'utilise pour les travaux Cron.