2013-02-02 57 views
0

我想在春天使用AOP登錄運行時數據。我能夠記錄靜態消息。但我的問題是我必須記錄用戶給出的輸入值(Eg.Name),如果用戶在表單中輸入'siva'作爲用戶名,我的日誌消息應該是「Siva已登錄」。如何將變量從視圖傳遞到控制器的方法在彈簧

我有一個用於獲取用戶名的文本框的jsp表單,其中有用於用戶名,控制器類和方面類的setter和getter的bean類。

我的控制器類是:

@RequestMapping("/login.htm") 

public ModelAndView success(String name){ 

} 

我看點類是:

@After("execution(* com.controller.MyController.success(String))&&args(name)") 

public void After(){ 

    System.out.println("after method"); 
} 

我不知道怎麼弄的控制器方法的用戶名。我完全失明。我搜索並嘗試了許多可能性,但沒有任何結果。任何幫助表示讚賞....在此先感謝...

回答

0

要獲得您的控制器方法中的用戶名參數,您只需要使用@RequestParam註釋「名稱」參數。例如: -

@RequestMapping("/login.htm") 

public ModelAndView success(@RequestParam("name") String name){ 

} 

而在你的後建議得到名字,只是改變了方法的簽名後,接受「名稱」的字符串:

@After("execution(* com.controller.MyController.success(String))&&args(name)") 

public void after(String name){ 
    logger.info("User "+name+" has logged in!"); 
} 

希望它解決了問題。

+0

非常感謝你......它真的解決了我的問題...... –

+0

@PavithraR你可以請upvote答案並將其標記爲已解決。謝謝。 –

0
//your Aspect class 
@Aspect 
@Component 
public class MyAspect { 

    @Pointcut("execution(* com.controller.MyController.success(..)) && args(username)") 
    public void controllerExecution(String username){}; 

    @After("controllerExecution(username)") 
    public void afterControllerExecution(final String username){ 
     System.out.println("username is : " + username); 
    } 
} 

//the method in your controller 
@RequestMapping(value="/success") 
public String success(String username){ 
    return "home"; 
} 

請求的URL會是這樣的:www.XXX.com/success?username=Johnny @Piyush喬希,在這種情況下,你不一定必須使用@RequestParam獲得AOP的作品。

+0

謝謝......我解決了問題... –

相關問題