天天看點

Spring MVC 中“攔截器”處理模型資料 (二) @ModelAttribute

在這裡強烈建議看看我之前寫的幾篇關于springmvc的部落格,都是串通的。

@modelattribute這個是springmvc中處理模型資料的最難也是最重要的點。相當于以前struct的攔截器。

用途:比如我們要修改一個對象的部分資料,按照以前的思維,new一個對象儲存資料,然後指派,把不修改資料先拿出來儲存起來。但是這個已經out了, 在springmvc中,是拿到資料庫的執行個體,然後把傳進來的值也就是需要修改的值set進去,那麼沒有set的值即為不需要修改的值。

index.jsp

這段程式的運作結果就會是:

Spring MVC 中“攔截器”處理模型資料 (二) @ModelAttribute

該回顯資料也是能夠顯示出來。我把執行過程和源碼分析拿出來特别的說一下。

運作流程:

源代碼分析的流程

springmvc 确定目标方法pojo 類型入參的過程

總結

這裡有一個特别值得注意的地方

Spring MVC 中“攔截器”處理模型資料 (二) @ModelAttribute

如果你的controller被@sessionattributes修飾了,而且value也是那個,而且沒用@modelattribute修飾方法,同時也沒有@modelattribute修飾目标方法入參。這個時候就會抛出異常。我們知道原理之後很容易去避免這個異常。

Spring MVC 中“攔截器”處理模型資料 (二) @ModelAttribute