0

メソッドのみを含むController名前を作成しました。もう1つは、すべてのメソッドを含み、アノテーションを使用して使用します。InterceptionLogger.javaInterceptionControllerApplicationactionInterception@With

これはApplication.javaコントローラーです:

@With(InterceptionLogger.class)
public class Application extends Controller {

public static void index() {
    System.out.println("Inside index!!!");
    render();
}

public static void welcome(String txtName){     
    render(txtName);
}

InterceptionLogger.javaコントローラがこれである場合:

public class InterceptionLogger extends Controller {   

@Before
static void logBefore(){
    System.out.println("Inside \"logBefore\" method of App Controller");
}

@After
static void logAfter(){
    System.out.println("Inside \"logAfter\" method of App Controller");
}

}

アプリケーションを実行すると、出力は次のようになります。

Inside "logBefore" method of App Controller
Inside index!!!
Inside "logAfter" method of App Controller

さすがに結構です。

しかし、これに変更するInterceptionLogger.javaと:

public class InterceptionLogger extends Controller {   

@Before(only="welcome")
static void logBefore(){
    System.out.println("Inside \"logBefore\" method of App Controller");
}

@After(only="index")
static void logAfter(){
    System.out.println("Inside \"logAfter\" method of App Controller");
}

}

次に、この出力を取得していますindex

Inside index!!!

この場合、ステートメントInside "logAfter" method of App Controllerがコンソールに出力されないのはなぜですか?

それを機能させる方法は?

4

1 に答える 1

2

遊ぶ!現在のコントローラーでインターセプトされたメソッドを探しています。メソッドが別のコントローラーにある場合は、フルパスを指定する必要があります。

@Before(only="Application.welcome")
static void logBefore(){
    System.out.println("Inside \"logBefore\" method of App Controller");
}

@After(only="Application.index")
static void logAfter(){
    System.out.println("Inside \"logAfter\" method of App Controller");
}
于 2013-02-03T10:35:57.800 に答える