2012-03-30 6 views
1

ich neu in Play und Scala/Java.nach dem Erstellen neuer Anwendung Anmerkungen funktioniert nicht

ich installieren typsicher-Stack von typesafe.com und neues Projekt für Test erstellen: g8 typesafehub/play-scala Nachdem ich Java Annotations TestAnn.java erstellen:

package ann; 

import play.mvc.With; 

import java.lang.annotation.Documented; 
import java.lang.annotation.ElementType; 
import java.lang.annotation.Inherited; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

@With(TestAnnAction.class) 
@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.METHOD, ElementType.TYPE}) 
@Documented 
@Inherited 
public @interface TestAnn { 

} 

und TestAnnAction.java enter code here:

package ann; 

import play.mvc.Http; 
import play.mvc.Result; 
import play.mvc.Action; 

public class TestAnnAction extends Action<TestAnn> { 
    @Override 
    public Result call(Http.Context ctx) throws Throwable 
    {  
     System.out.println("called"); 

     return null; 
    } 
} 

Und fügen Sie diese Application.scala Controller:

package controllers 

import play.api._ 
import play.api.mvc._ 

import ann.TestAnn 

object Application extends Controller { 

    @TestAnn 
    def index = Action { 
    Ok(views.html.index("Your new application is ready.")) 
    } 

} 

Dann führe ich Anwendung durch "sbt run", aber ich sah keine Zeichenfolge "aufgerufen" in Terminal nach Anfrage Indexseite. Keine Fehler und keine Ergebnisse.

Was mache ich falsch?

Update: Wenn ich Java-Controller erstellen, funktioniert alles gut. Application.java Paketsteuereinheiten;

import play.*; 
import play.mvc.*; 

import views.html.*; 

import ann.TestAnn; 

public class Application extends Controller { 

    @TestAnn 
    public static Result index() { 
    return ok(index.render("Your new application is ready.")); 
    } 
} 
+0

hast du schon gelöst? – angelokh

Antwort

0

Sie sollten delegate.call (ctx) aufrufen, anstatt nur null zurückzugeben.

public class TestAnnAction extends Action<TestAnn> { 
    @Override 
    public Result call(Http.Context ctx) throws Throwable 
    {  
     System.out.println("called"); 
     return delegate.call(ctx); 
    } 
} 
Verwandte Themen