Spring Boot 2.0 教程 | @ModelAttribute 注解


歡迎關注微信公眾號: 小哈學Java
文章首發於個人網站: https://www.exception.site/springboot/spring-boot-model-attribute

Spring Boot 2.0 中的注解 @ModelAttribute 有什么作用呢?

通常情況下,我們會將 @ModelAttribute 注解放置在 Controller 中的某個方法上,那么,如果您在請求這個 Controller 中定義的 URI 時,會首先調用這個被注解的方法,並將該方法的結果作為 Model 的屬性,然后才會調用對應 URI 的處理方法。

一、@ModelAttribute 使用場景

我們通常會通過 @ModelAttribute 來向某個 Controller 中需要的公共模型 Model 中添加數據。如下面的示例代碼所示。

二、示例代碼

@ModelAttribute
public void findUserById(@PathVariable("userId") Long userId, Model model) {
    model.addAttribute("user", userService.findUserById(userId));
}

@GetMapping("/user/{userId}")
public String findUser(Model model) {
    System.out.println(model.containsAttribute("user"));
    return "success !";
}

當我們請求接口 /user/1 時,會先調用 findUserById 方法,方法內,通過 userId 查詢到對應的 User 對象放置到 Model 模型中。

需要注意,如果您僅僅只是添加一個對象到 Model 模型中,上面的代碼還可以再精煉一點:

@ModelAttribute
public User findUserById(@PathVariable("userId") Long userId) {
    return userService.findUserById(userId);
}

通過上述的代碼,返回的 User 對象會被自動添加到 Model 模型中,就相當於您手動調用了 model.addAttribute(user) 方法。

歡迎關注公眾號: 小哈學Java


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM