2012-12-06 35 views
0

我在Spring MVC控制器上有一個操作方法,該方法的參數註釋爲@ModelAttribute。但是,我不知道在編譯時該參數的類型是什麼 - 我知道抽象基類型,但不知道派生類型。手動執行ModelAttribute註解在Spring MVC中的作用

在運行時,我將能夠決定我期望什麼類,並且我將能夠獲得此類的新實例。但是,我不知道我應該調用哪些代碼來以與@ModelAttribute相同的方式解析請求數據。

我環顧四周,似乎如果我可以得到持有的WebRequestDataBinder我可以用它來填充我的對象,但爲此我需要一個BinderFactory,這就是我迷失方向的地方。

任何人都可以在這裏給我一些提示 - 或者告訴我,我看錯了方向,需要做點別的嗎?

回答

0

您可以將模型本身注入到您的控制器方法中並自己訪問該屬性。

@RequestMapping(...) 
public void doStuff(ModelMap model) { 
    Object attr = model.get("nameOfAttribute"); 
    // ... 
} 
+0

這也適用於複雜的對象,或只是原始值?它將如何知道要使用什麼類? – efdee

+0

@efdee它可以用於你放入模型的任何類型......當我考慮你的評論時,這聽起來像你在談論'@ RequestParam'而不是'@ ModelAttribute'。使用@ @ ModelAttribute'通常可以控制模型內部的內容。也許我們交叉討論。你能提供一些代碼來清除你在做什麼嗎? – Yevgeniy

+0

我認爲'@ RequestParam'是用於來自請求映射的參數,例如。對於'/ users /:id',id將是'@ RequestParam'。 我有一個包含數據的表單,我想將其發回給我的控制器。過去我使用過'@ ModelAttribute'來獲取數據到一個實際的對象中。然而,這個特定的表單是動態構建的,所以我不能在編譯時指定用於解析數據的具體類。但是,我可以在運行時檢查一些事情,以便最終了解它會是什麼類型。 – efdee

相關問題