post-image

Annotation @ModelAttribute

4. Validation, Exception & Cookie

Một trong những annotation quan trọng nhất trong Spring MVC.

Thông thường, controller có thể chuyển tập các model attribute tới cho front controller (và nhờ đó view có thể truy cập các model atrribute này) bằng cách sử dụng kiểu trả về ModelAndView, hoặc bằng cách thông qua tham số Model/ModelMap.

Annotation ModelAttribute là một cách bổ sung, nó giúp bind tham số hoặc kết quả trả về của một phương thức thành một model attribute dưới tên được chỉ định.

Bind kết quả trả về của một method thành model attribute

@ModelAttribute("customers")
public Iterable<Customer> getAllCustomers() {
    return customerService.findAll();
}

Phương thức trên được gọi ngay trước mỗi khi handle method (những method có annotation @RequestMapping hoặc tương đương) được gọi, và nó bổ sung model attribute có tên “customers” vào model trả về của bất kỳ handle method nào. Có nghĩa là mọi view được handle method dẫn ra sau đó đều có thể sử dụng model attribute này.

Bind tham số của một method thành model attribute

@PostMapping
public String submitCustomer(@ModelAttribute("customer") Customer newCustomer) {
    customerService.save(newCustomer);
    return "customers/info";
}

Tham số newCustomer ở trên, dĩ nhiên được tổng hợp lại từ request. Ở đây, nhờ có annotation ModelAttribute, đối tượng này cũng được bổ sung tự động vào model cho view “customers/info”, dưới tên “customer”.

Leave a Reply

Your email address will not be published. Required fields are marked *