2010-02-08 34 views
4

我想創建一個匹配切入點任何方法AspectJ的切入點簽名在我的網絡控制器的任何方法包含ModelMap:試圖匹配包含可變

pointcut addMenu(ModelMap modelMap) : 
    execution (public String example.web.MyController.*(..)) && args (modelMap); 

before(ModelMap modelMap) : addMenu(modelMap) { 
    // Do stuff with modelMap... 
} 

我的問題是,這只是只與匹配方法 ModelMap參數,其他人不匹配,因爲它們包含太多的參數。例如,這不是截獲,由於「請求」參數:

public String request(HttpServletRequest req, ModelMap modelMap) { 
    // Handle request 
} 

有什麼辦法,以配合一個ModelMap參數的所有方法,而無需添加一個切入點代表每一個可能的參數組合?

回答

4

您可以使用通配符*..以靈活的方式表示參數。

pointcut addMenu(ModelMap modelMap) : 
    execution (public String example.web.MyController.*(..)) && args (*, modelMap); 

AspectJ: parameter in a pointcut

+0

感謝。這接近我想要的,但它導致切入點不再匹配我的「request(ModelMap modelMap)」方法,因爲它期望多於一個參數。 – seanhodges

+0

是的,這個問題在我的答案中鏈接的帖子中有關。您可以嘗試使用「..」或創建兩個切入點「*,modelMap」和「modelMap」。 – ewernli

+0

使2個切入點有效,謝謝。 – seanhodges