2014-10-13 55 views
-2

我寫一個方面AJ文件,如下所示爲我的Java類AspectJ的註解

pointcut printMessage(String name) : call(public static String myhobby(..)) && args (name); 
    before(String name) : printMessage(name) { 
      System.out.println("Aspects: "+ name); 

    } 

我嘗試寫使用註釋相同的外觀文件如下圖所示

@Before("call(* myhobby(..)) && args(name)") 
     public String callFrom(String name) { 
      System.out.println("value is: " + name); 
     } 
    } 

但它顯示

the attribute value is undefined for the annotation Before 

任何一個可以告訴我如何解決這個

+0

是否要在調用方法String myhobby(..)之前執行方法callFrom(String name)? –

+0

是... @ AtulSharma – user3797438

回答

-1

您可以使用下面的代碼定義myhobby(..)方法實施前的切入點:

//Method before which point cut needs to be set 
@Pointcut("execution(* package.name.ClassName.myhobby(..))") 
    public void pointCutFunction() { 

    } 

@Before("pointCutFunction()") 
    public Object myAdvice(final ProceedingJoinPoint proceedingJoinPoint) 
      { 
Object arr[]=proceedingJoinPoint.getArgs(); 
System.out.println("value is: " + arr[0]); 

} 

希望這能解決你的問題。

+0

它顯示無法解決ProceedingJoinPoint ..我必須導入 – user3797438

+0

import org.aspectj.lang.ProceedingJoinPoint; –

+0

什麼進口.. – user3797438

0

混沌先生再次。你甚至沒有發佈正確的錯誤信息。爲了您的切入點錯誤信息應該是:

This advice must return void. 

而這正是必須改變。你有沒有讀過錯誤信息?

@Before("call(* myhobby(..)) && args(name)") 
public void callFrom(String name) { 
    System.out.println("value is: " + name); 
} 

不需要任何getArgs()開銷。

+0

@ kriegaex ...謝謝你Mr.Genius ...我知道如何閱讀錯誤信息,併發布錯誤信息...因爲我沒有導入導入org.aspectj.lang.annotation。*; ... – user3797438

+0

不,對不起,這是不正確的。然後代碼甚至不會編譯,你會得到'以前無法解析爲一個類型'。 – kriegaex

+0

但我沒有得到那個錯誤... – user3797438