我创建了一个名为Controller
的{{1}},它只包含InterceptionLogger.java
个方法。另一个Interception
即Controller
将包含所有Application
方法,并使用action
注释使用Interception
。
这是@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!!!
没有在控制台中打印出来?
如何让它发挥作用?
答案 0 :(得分: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");
}