我有一个 Controller 如下
@Controller
@RequestMapping(value = "/")
public class HomeController {
@RequestMapping("/")
public String home(Map<String,Object> map) {
map.put("val2","val2");
return "mainpage"; //it is the jsp file name
}
}
现在,在我的方面类方法中,我想在 Controller 方法中定义的映射变量中放入另一个值
@Aspect
public class UserInfo {
@Before("execution(* org.controller.HomeController(..)) ")
public void m1(){
//Map<String,Object> map
// get the map here and add
map.put("val1","val1);
}
}
这样当我从 mainpage.jsp 文件中调用这个 map 时,我得到的两个值都是
${val1}
${val2}
我该怎么做???
最佳答案
您可以在 JoinPoint 上使用 getArgs 来获取方法的参数,例如:
Object[] signatureArgs = joinPoint.getArgs();
你的 m1 方法应该是这样的:
public void m1(JoinPoint joinPoint){
您已经知道该方法只有一个参数,因此您需要将其类型转换为映射,然后放入新值并调用继续方法以继续进一步的实际调用。
关于Spring AOP 传递 Controller 方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29326705/