Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal

[series Spring Boot] 8. Model Attribute

Discussion in 'Spring Framework' started by quydtkt, 22/11/19.

  1. quydtkt

    quydtkt Administrator

    Trong bài này, chúng ta sẽ cùng tìm hiểu về Model attribute trong Spring Boot.
    1. Truyền dữ liệu từ controller lên view trong mô hình MVC
    - Trong bài trước, chúng ta đã biết cách để đưa dữ liệu từ controller lên view thông qua request bằng cách sử dụng class HttpServletRequest.
    - Trong Spring Boot, có thêm khái niệm model. Cũng tương tự như HttpServletRequest, model giúp chuyển dữ liệu từ controller lên view.​
    2. Cách sử dụng model attribute
    a. Sử dụng thông qua model
    HelloController.java
    PHP:
    package vn.congdongjava.controller;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.*;
     
    @
    Controller
    public class HelloController {
     
        @
    RequestMapping(value "/"method RequestMethod.GET)
        public 
    String index(Model model) {
            
    model.addAttribute("name""quydtkt");
            
    model.addAttribute("age"26);
     
            return 
    "index";
        }
    }
    - Để sử dụng model, ta khai báo biến Model là tham số đầu vào của request mapper. Spring Boot sẽ tự khởi tạo biến cho chúng ta sử dụng mà không cần phải tự khởi tạo.
    - Để đưa dữ liệu vào model, ta sử dụng phương thức addAttribute (tương tự setAttribute của HttpServletRequest).​
    index.html
    HTML:
    <!DOCTYPE HTML>
    <html>
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    	<title>Cộng đồng Java - Model attribute</title>
    </head>
    <body>
    Name [[${name}]]<br/>
    Age [[${age}]]
    </body>
    </html>
    Chạy project và truy cập vào link http://localhost:8080
    [​IMG]
    b. Sử dụng annotation @ModelAttribute
    WelcomeController.java
    PHP:
    package vn.congdongjava.controller;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import vn.congdongjava.vo.PersonItem;
     
    @
    Controller
    public class WelcomeController {
     
        @
    ModelAttribute(value "address")
        public 
    String getAddress() {
            return 
    "HCM";
        }
     
        @
    RequestMapping(value "/welcome"method RequestMethod.GET)
        public 
    String show(@ModelAttribute(value "person")PersonItem person) {
            
    person.setName("quydtkt");
            
    person.setAge(26);
     
            return 
    "welcome";
        }
    }
    - Có thể đưa dữ liệu vào model bằng cách đánh dấu tham số đầu vào của request mapper hoặc public method trong controller bằng annotation @ModelAttribute
    - Key của model attribute trong trường hợp này là giá trị tham số value của annotation @ModelAttribute
    - Khi sử dụng annotation @ModelAttribute với tham số đầu vào của request mapper, Spring Boot sẽ tự khởi tạo đối tượng, chúng ta không cần khởi tao và cũng không được khởi tạo lại, nếu không tham chiếu của model attribute tới đối tượng dữ bị mất.​
    welcome.html
    HTML:
    <!DOCTYPE HTML>
    <html>
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    	<title>Cộng đồng Java - Model attribute</title>
    </head>
    <body>
    Name [[${person.name}]]<br/>
    Age [[${person.age}]]<br/>
    Address [[${address}]]
    </body>
    </html>
    Chạy project và truy cập link http://localhost:8080/welcome
    [​IMG]

    Cám ơn các bạn đã theo dõi. Hẹn gặp lại trong bài viết tiếp theo :)
     

    Attached Files:

    Last edited: 23/11/19
  2. Joe

    Joe Thành viên VIP

    Hi boss, the posted image won't show up here :(
     
    quydtkt likes this.
  3. quydtkt

    quydtkt Administrator

    I using google photo to post image to forum. But, I have some problems about sharing photos. I fixed those errors. Thank you for your comments
     
  4. Joe

    Joe Thành viên VIP

    ...Oh, don't trust the diva Google. Trust the litte person and it's more reliable. A hint: create an account at this site: https://imgbb.com/ and your pics always show up :-*
     
    quydtkt likes this.

Chia sẻ trang này

Loading...