在Spring MVC中,很容易將請求參數綁定到處理請求的方法參數。我只是使用@RequestParameter("name")
。但是,我可以做同樣的請求屬性?目前,當我想訪問請求屬性,我必須做以下幾點:Spring MVC:將請求屬性綁定到控制器方法參數
MyClass obj = (MyClass) request.getAttribute("attr_name");
但我真的想用這樣的事情,而不是:
@RequestAttribute("attr_name") MyClass obj
不幸的是,它不這樣工作。我可以以某種方式擴展Spring功能並添加我自己的「活頁夾」?
編輯(我想要實現):我存儲當前登錄請求屬性內的用戶。所以,無論何時我想訪問當前登錄的用戶(這在每種方法中都很常見),我必須寫出這個額外的行user = (User) request.getAttribute("user");
。我希望儘可能縮短它,最好將它作爲方法參數注入。或者,如果您知道如何通過攔截器和控制器傳遞某些信息,我很樂意聽到。
這是完美的!謝謝。 – Raff 2013-05-24 14:01:53
如果參數名稱與模型對象上的屬性匹配,則不需要額外的getUser方法,spring將自動設置這些屬性 – chrismarx 2014-02-07 21:33:53
這樣,您的方法中的User對象不僅可以從視圖模型中檢索,還可以從其視圖模型中檢索將被傳入的請求或表單參數綁定(並覆蓋)。例如,如果User對象具有一個id屬性(許多用戶對象將擁有該屬性),並且請求url或表單也具有不相關的id參數,則它將覆蓋User對象的id。這曾經在我的代碼中創建了一個令人討厭的錯誤。在這種特殊情況下,您不需要@ModelAttribute的表單綁定屬性。另一種方法是使用User u =(User)model.get(「user」);' – klausch 2015-11-03 10:06:51