HSF302 - Phần 6: Giao diện web với Thymeleaf
Vòng lặp th:each duyệt một danh sách lấy từ controller và sinh cho mỗi phần tử một hàng bảng, kèm biến trạng thái cho chỉ số hay hàng chẵn lẻ. Biểu mẫu gắn với một đối tượng qua th:object, mỗi ô nhập dùng th:field với biểu thức chọn *{name}, nên giá trị cũ tự điền lại khi kiểm tra không đạt. Các biểu thức chuẩn chia việc với nhau: ${…} đọc biến, *{…} đọc thuộc tính của đối tượng đang chọn, @{…} dựng đường dẫn có ngữ cảnh ứng dụng, #{…} lấy chuỗi thông báo. Phần tử chỉ hiện khi điều kiện đúng thì dùng th:if hoặc th:unless. Vì các thuộc tính th:* nằm trên thẻ HTML thật, tệp mẫu vẫn mở được bằng trình duyệt như một trang tĩnh. Dữ liệu đổ vào mẫu đến từ controller ở Phần 5.
Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.
Luyện tập theo chủ đề này
Câu hỏi của chủ đề
<span th:if="${user.loggedIn}">Welcome!</span><a th:href="______">Home</a>Đáp án đúng: "th:if". th:if đánh giá một biểu thức, ví dụ th:
if="${user.admin}";nếu kết quả là true, Thymeleaf giữ lại thẻ cùng toàn bộ nội dung bên trong khi render, nếu false thì thẻ bị loại khỏi HTML đầu ra; th:unless làm điều ngược lại. Đây là cách hiển thị có điều kiện, như chỉ hiện nút xoá cho quản trị viên. "th:each" là thuộc tính lặp, nhân bản thẻ cho từng phần tử của một tập hợp, ví dụ mỗi sản phẩm một dòng bảng. "th:text" thay nội dung chữ của thẻ bằng giá trị biểu thức, có escape HTML. "th:href" tạo giá trị thuộc tính href cho liên kết, thường dùng cú pháp @{...} để sinh URL có context path. Không thuộc tính nào trong số đó quyết định việc thẻ có xuất hiện hay không.
ReactVue.jsThymeleafAngularReact.jsAngular.jsThymeleafNode.jsĐề có câu hỏi của chủ đề này
5 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.