gpt4 book ai didi

java - 使用单独的 Controller 进行拦截

转载 作者:行者123 更新时间:2023-12-02 07:18:04 25 4
gpt4 key购买 nike

我创建了一个名为 InterceptionLogger.javaController,其中仅包含 Interception 方法。另一个 ControllerApplication 将包含所有 action 方法,并使用 @With 来使用 Interception 注释。

这是Application.java Controller :

@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 Controller 是这样的:

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 语句没有打印在控制台中?

如何让它发挥作用?

最佳答案

玩吧!正在寻找当前 Controller 中拦截的方法。如果该方法位于另一个 Controller 中,您需要提供完整路径:

@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");
}

关于java - 使用单独的 Controller 进行拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com