1. 概述
Thymeleaf 是一个现代的用于构建 Web 环境的 Java 模板引擎,特别适合现代 HTML 网页开发。它与 Spring Boot 配合得非常好。
在这个教程中,我们将学习如何在 Thymeleaf 中根据条件为输入框添加 checked
属性。
2. 使用 th:checked
属性
Thymeleaf 标准方言允许我们在 HTML 文档的任何元素上条件性地添加固定值布尔属性。其中一个是 th:checked
,它等同于 HTML 中的 checked
属性。
th:checked
属性用于 HTML 文档中的任何类型为 checkbox
的输入框。它接受任何布尔类型的表达式,该表达式会被评估为 true
或 false
。
例如,为了决定复选框是否被选中,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 上找到。