Sử dụng Thymeleaf trong Spring MVC

Thymeleaf là một template engine mở với khả năng xử lý nhiều loại ngôn ngữ khác như HTML, XML, Javascript, CSS. Người dùng có thể dùng nó để tuỳ biến template theo nhu cầu của mình. Trong bài viết này, mình sẽ hướng dẫn các bạn các bước cơ bản cách sử dụng Thymeleaf trong Spring MVC các bạn nhé!

Đầu tiên, mình sẽ tạo mới một Maven project để làm ví dụ:

Sử dụng Thymeleaf trong Spring MVC

Bạn nào chưa biết cách tạo project Spring MVC thì có thể tham khảo bài viết này. Ở đây, mình chỉnh version của các thư viện như sau:

Để sử dụng được Thymeleaf, chúng ta cần phải add dependency của nó:

Để chạy ví dụ này, mình sẽ sử dụng Maven Jetty Plugin:

Trước khi bắt đầu vào chủ đề của bài viết này, mình muốn nói với các bạn đôi chút về khái niệm dialect trong Thymeleaf …

Như mình đã nói, Thymeleaf cho phép chúng ta tuỳ biến template của chúng ta một cách dễ dàng. Việc tuỳ biến này sẽ sử dụng những đối tượng được quy định bởi Thymeleaf. Chúng ta sẽ có những xử lý logic trong những đối tượng này do đó những đối tượng này còn được gọi là những processor và tập hợp nhiều đối tượng processor ta sẽ có 1 dialect.

Mặc định Thymeleaf cung cấp cho chúng ta 2 dialect: một cái là Standard Dialect và một cái nữa là SpringStandard Dialect với một số chức năng hỗ trợ cho Spring framework. Trong bài viết này, chúng ta sẽ sử dụng SpringStandard Dialect.

Để sử dụng Thymeleaf trong Spring MVC, đầu tiên chúng ta cần khai báo đối tượng SpringTemplateEngine của Thymeleaf trong Spring container. Đối tượng này sẽ giúp chúng ta khai báo ViewResolver của Thymeleaf với Spring.

Các bạn hãy mở tập tin servlet-context.xml nằm trong thư mục /src/main/webapp/WEB-INF/spring/appServlet, xoá ViewResolver mặc đinh:

rồi thêm khai báo của đối tượng SpringTemplateEngine của Thymeleaf vào nhé!

Như các bạn thấy, để khai báo đối tượng SpringTemplateEngine của Thymeleaf trong Spring container, chúng ta phải khai báo thêm một đối tượng khác là SpringResourceTemplateResolver để cấu hình location của các tập tin template. Và đối tượng ThymeleafViewResolver sẽ sử dụng đối tượng TemplateEngine này.

Cấu hình của SpringResourceTemplateResolver cũng tương tự như đối tượng InternalResourceViewResolver, điểm khác duy nhất là chúng ta sẽ làm việc trên các tập tin .html chứ không còn là .jsp nữa. Đúng nghĩa là template hơn, vì trong tập tin .jsp, chúng ta có thể khai báo code Java trong đó nữa.

Bây giờ, mình sẽ đổi lại tên file home.jsp nằm trong thư mục /src/main/webapp/WEB-INF/views/ thành home.html để sử dụng với Thymeleaf. Nội dung của tập tin home.html lúc này như sau:

Bằng cách sử dụng namespace của Thymeleaf, mình sẽ sửa lại nội dung của tập tin home.html như sau:

Như các bạn thấy, ở đây mình đã khai báo namespace của Thymeleaf và sử dụng nó như một attribute của một thẻ HTML.

Kết quả cũng tương tự khi các bạn chạy với InternalResourceViewResolver:

Sử dụng Thymeleaf trong Spring MVC

5/5 - (2 bình chọn)

7 thoughts on “Sử dụng Thymeleaf trong Spring MVC

  1. Hi anh, em hỏi về vấn đề Template Enginer Thymeleaf.
    Nếu trước đó project đã định nghĩa các prefix, suffix là .jsp
    Nhưng giờ chuyển đổi từ JSP sang Thymeleaf thì có cách nào dùng được cả 2 không anh nhỉ?

    Phần config ViewResolver của project đang như sau:

    <!– –>

Add Comment