1. 概述

Thymeleaf 是一个现代的用于构建 Web 环境的 Java 模板引擎,特别适合现代 HTML 网页开发。它与 Spring Boot 配合得非常好。

在这个教程中,我们将学习如何在 Thymeleaf 中根据条件为输入框添加 checked 属性。

2. 使用 th:checked 属性

Thymeleaf 标准方言允许我们在 HTML 文档的任何元素上条件性地添加固定值布尔属性。其中一个是 th:checked,它等同于 HTML 中的 checked 属性。

th:checked 属性用于 HTML 文档中的任何类型为 checkbox 的输入框。它接受任何布尔类型的表达式,该表达式会被评估为 truefalse

例如,为了决定复选框是否被选中,Thymeleaf 引擎会评估 th:checked 属性中的指定条件。如果条件评估为 true,则复选框将被选中;如果条件评估为 false,则复选框将未选中。

3. 示例

让我们通过一个实际的例子来看一下 Thymeleaf 的 th:checked 属性是如何工作的。首先,我们定义一个 Spring 控制器:

@Controller
public class AttributeController {

    @GetMapping("/checked")
    public String displayCheckboxForm(Model model) {
        Engine engine = new Engine(true);
        model.addAttribute("engine", engine);
        model.addAttribute("flag", true);
        return "attribute/index";
    }

    private static class Engine {
        private Boolean active;

        public Engine(Boolean active) {
            this.active = active;
        }

        public Boolean getActive() {
            return active;
        }
    }
}

我们的控制器允许初始化两个变量:一个类型为 Boolean 的名为 “flag” 的变量,以及一个包含布尔属性 “active” 的对象 Engine。在模板中,我们将使用这两个变量来展示如何通过 th:checked 条件性地启用或禁用复选框

<form method="post">
    <label>
        <input type="checkbox" th:checked="${flag}"/> Flag activated
    </label>
    <label>
        <input type="checkbox" th:checked="${engine.getActive()}"/> Customer activated
    </label>
    <label>
        <input type="checkbox" th:checked="${flag ? false: true}"/> Flag deactivated
    </label>
</form>

在模板中,我们使用 flag 变量和 engine.active 属性来设置复选框。由于我们在控制器中初始化了这些变量为 true,所以第一个和第二个复选框被启用,而第三个被禁用,因为我们的条件表达式评估为 false

4. 总结

在这篇简短的教程中,我们了解了 Thymeleaf 中 checked 属性的用法。通过一个实际示例,我们也学会了如何在 Thymeleaf 中根据条件为输入框添加 checked 属性。

本文所示代码的完整工作版本可以在 GitHub 上找到。