Sep 052011
 

Considérons le contrôleur suivant :

app/controllers/Application.java

Ainsi que le template associé :
app/views/Application/redirect.html

Lequel des trois prénoms suivants, Michel, Serge et Robert, va t’il s’afficher dans votre navigateur à l’adresse http://localhost:9000 ?

La réponse est Robert.

Conclusion : Un renderArgs.put dans un @After ne sert à rien!

  5 Responses to “Play! Framework Tips : un renderArgs.put dans un @After sert t’il à quelque chose”

  1. Bien sur si quelqu’un à une explication concrète qu’il n’hésite pas à le partager ici.

  2. Hi, I’m Jitesh, and I work for Packt. I am looking for reviewers for our recently published book, Play Framework Cookbook written by Alexander Reelsen .

    I found that your blog is informative, and has potential articles on Play! If you are interested in reviewing the book, then I’d be glad to send you an e-copy of it.

    More information about the book: http://www.packtpub.com/play-framework-cookbook/book

    For more details, contact me on: jiteshg@packtpub.com

  3. Bonjour,

    Explication concrète : les méthodes annotées en “@after” sont appelées après le render. Par conséquent, modifier les renderArgs ne sert effectivement plus à rien, c’est trop tard.

    Il y aurait un effet si les méthodes @after étaient appelées au moment du render, ce qui n’est pas le cas. Un petit coup d’oeil dans play.mvc.ActionInvoker permet de le vérifier (méthode invoke).

    // 3. Invoke the action
    try {
    // @Before
    handleBefores(request);

    // Action
    Result actionResult = null;
    ...
    ...invokeControllerMethod...etc...
    ... (la controllerMethod fait appel au render)
    ...

    // @After
    handleAfters(request);

    Bonne journée !

  4. Ce qu’ils sont fort ces Zergs :p

  5. Plutôt mal foutu étant donné que la cheatsheet 1.2.4 indique :

    @Before ➟ action ➟ @After ➟ template ➟ @Finally

    Y’a-t-il un moyen pour agir sur le template après @After comme semble l’indiquer la doc ?

Leave a Reply