【发布时间】:2021-10-08 02:41:03
【问题描述】:
我开始使用 Springboot 并且无法将验证结果(错误)传播回百里香模板。我有一个典型的设置:@Entity 对象、@Service 和@Repository。这是我的控制器和索引模板(及其形式)的部分。 UserVital、UserBlood 等是使用 hibernate 映射到 DB 表的数据对象。希望这些信息足以让成员们为我指明正确的方向。
数据对象
@Entity
@Table(name = ".....")
public class UserVital {
@NotNull(message = "Height (Feet) cannot be null")
@Range(min = 0, max = 15, message = "Height (Feet) must be greater than 0")
@Column(name = "feet", nullable = false)
private int heightInFeet;
.............
}
控制器
@GetMapping("/")
public String getUsers(Model model) {
UserVital vital = new UserVital();
UserGrithMeasurements grith = new UserGrithMeasurements();
UserBloodChemistry blood = new UserBloodChemistry();
List<Category> categories = categoryService.getAllCategories();
model.addAttribute("categories", categories.get(0));
model.addAttribute("vital", vital);
model.addAttribute("grith", grith);
model.addAttribute("blood", blood);
return "index";
}
@PostMapping("/add")
public String addData(@Valid UserVital vital, BindingResult vitalValidationResult,
@Valid UserGrithMeasurements grith, BindingResult grithValidationResult, @Valid UserBloodChemistry blood,
BindingResult bloodValidationResult, Model model) {
if (vitalValidationResult.hasErrors() || grithValidationResult.hasErrors()
|| bloodValidationResult.hasErrors()) {
return "index";
} else {
model.addAttribute("successMsg", "Details saved successfully!!");
return "index";
}
}
百里香形式
<form class="tab-content" method="POST" th:action="@{/add}">
<div class="form-group row">
<label for="height" class="col-sm-2 control-label" th:text="#{height}"></label>
<div class="col-sm-2">
<input type="number" class="form-control" id="feet" th:attr="placeholder=#{feet}"
th:field="${vital.heightInFeet}">
</div>
<div class="form-group col-sm-12">
<label for="neck" class="col-sm-2 control-label" th:text="#{neck}"></label>
<div class="col-sm-2">
<input type="number" class="form-control" id="systolic" th:attr="placeholder=#{inches}"
th:field="${grith.neck}">
<div class="col-sm-2">
<input type="number" class="form-control" id="ldl" th:field="${blood.ldl}">
.....
</form>
问题:如您所见,我有多个 BindingResult 对象。每个 BindingResult 对象保存各自数据对象的验证结果(vitalValidationResult 保存 UserVital 对象生命体的验证结果等)。现在,我如何在模板中编写“th:if”语句,以便检查字段中是否有任何错误。
谢谢。
【问题讨论】:
标签: spring-boot spring-mvc thymeleaf