2012-10-19 47 views
2

我想在我的視圖中有一些對象,但我不想在我的控制器中的每個方法中重複/包含代碼,所以我想把這個對象放在會話中。截獲會話創建彈簧mvc

這樣它可以在視圖中可用,我不重複代碼。

所以我的問題是如何截取表單創建和設置一些對象創建的每個會話?

+0

你可以使用一個Servlet過濾器,但得到春天初始化bean進入過濾器在PITA中。 – nickdos

+0

我已經在過去通過將添加各種對象的代碼放入模型中處理了這個問題,並將其轉換爲常規方法(使用單個arg:Model),然後在需要它的每個控制器方法中引用此方法。這爲每個控制器方法增加了一行,並且意味着代碼很容易被別人利用。 – nickdos

回答

0

當你想讓某些數據/對象可用於所有的控制器方法時,最好將它放在控制器方法級別的模型中(使用@ModelAttribute)。下面的示例:

@Controller 
public class MyController{ 

    @ModelAttribute 
    public void getEmpRoles(Model model) { 
     List<String> roles = myservice.loadEmpRoles(); 
     model.addAttribute(roles); 
    } 

    @RequestMapping(...) 
    public String m1(Model model){ 
     // You roles model is available here 
    } 
} 

見春DOC這裏(http://bit.ly/JCutg2)瞭解更多關於在@ModelAttribute方法級別