2014-03-12 40 views

回答

0

Spring API文檔一般都很好,所以我總是建議在嘗試理解框架時作爲一個起點。

的Javadoc @ModelAttribute說以下內容:結合的方法參數或方法的返回值 到名爲模型屬性,暴露於web視圖

詮釋。 {@link RequestMapping}帶註釋的處理程序類支持 。

一般來說,@ModelAttribute是你的控制器來聲明其返回值由Spring自動綁定到模型,並確定由Spring自動綁定到方法參數型號值的方法的一種方式。

因此,例如:

@ModelAttribute("myValue") 
public Foo myValue() 
{ 
    return new MyFoo(); 
} 

這本質上說來春:

每當這個控制器被映射到服務的請求,調用此方法的返回值綁定到下模型鍵「myValue」。

這是一樣的:

@RequestMapping("/foo") 
public ModelAndView foo() 
{ 
    ModelAndView mav = new ModelAndView("myView"); 
    mav.addObject("myValue", new Foo()); 
    return mav; 
} 

沒有正確和錯誤的做法在這裏,它只是有利於建立模型的不同方式。

@ModelAttribute註釋也可用於控制器的方法參數。所以,你可以有以下幾種:

@RequestMapping("/doFoo") 
public void doFoo(@ModelAttribute("myValue")Foo foo) 
{ 
    Do some stuff here... 
} 

再次,這是一個方便的方法提供由Spring以便於執行不同的管制方式。它是完全一樣的:以完全相同的方式

@RequestMapping("/doFoo") 
public void doFoo(ModelAndView modelAndView) 
{ 
    Foo foo = (Foo)modelAndView.getModel().get("myValue"); 
    Do some stuff here... 
} 

@SessionAttribute作品,但正如其名稱所揭示的,該值綁定到或從用戶的HttpSession中,而不是模型讀取。

相關問題