2012-10-02 24 views
9

1.2 Oyununu kullanırken, herhangi bir denetleyicideki herhangi bir denetleyicinin her isteğinden önce veya sonra bir yöntemi yürütmek için @Before veya @After (ve diğerleri ...) ile bazı yöntemlere açıklama ekleyebiliyordum.Oyun 2.0 eşdeğeri @ Play @ ve @ 1.2 oyunlarından hangisi?

Bunu Play 2.0'da nasıl yapabilirim?

Global nesneyi biraz okudum, ancak aradığım gibi görünmüyor. Ayrıca, eylem kompozisyonu yapmak istediklerim için çok karmaşık görünüyor. Daha basit bir şey görmeyi umuyorum.

Herhangi bir fikrin var mı?

cevap

8

Ne yazık ki, için action composition kullanmanız gerekir ve @After için eşdeğer yoktur.

@After için, kendi eylemimin sonunda kendi after yöntemimi yazayım; Böyle bir şey:

public static Result index() { 
    .... 
    Result result = ...; 
    return after(result); 
} 

protected static Result after(Result result) { 
    ... 
    Result afterResult = ..., 
    return afterResult 

} 
3
public class Logging { 

    @With(LogAction.class) 
    @Target({ElementType.TYPE, ElementType.METHOD}) 
    @Retention(RetentionPolicy.RUNTIME) 
    public @interface Logs { 

    } 

    public static class LogAction extends Action<Logs> { 

     private void before(Context ctx) { 
      System.out.println("Before action invoked"); 
     } 

     private void after(Context ctx) { 
      System.out.println("After action invoked"); 
     } 

     public F.Promise<Result> call(Http.Context context) throws Throwable { 
      before(context); 
      Promise<Result> result = delegate.call(context); 
      after(context); 
      return result; 
     } 
    } 

} 

Annotatesekmesindeki @Logs ile denetleyicisi.

İlgili konular