我正在開發一個帶有用戶登錄和注冊的小型 Spring Boot 應用程式。我想通過現場驗證實作我自己的注冊系統。為了驗證,我使用我自己的org.springframework.validation.Validatorin 控制器實作。Vaidator 從bindingResult控制器中捕獲所有錯誤并將其發送到model現場的前端:
@PostMapping("/registration")
public String signUpUser(User userForm, BindingResult bindingResult,
Model model) {
validator.validate(userForm, bindingResult);
if(bindingResult.hasErrors()) {
Map<String, String> errors = ControllerUtils.getFieldErrors(bindingResult);
model.mergeAttributes(errors);
return "registration";
}
return "registration";
如果會有任何驗證錯誤,Map<String, String> errors將保留所有錯誤。例如,如果用戶在注冊時不會填寫欄位firstName映射將持有物件,如:"firstNameError" -> "Please, fill the field",等等。
在我之前的專案中,我使用 Freemarker 作為模板引擎,并且某些元素的前端代碼看起來像這樣:
<label for="inputFirstName" class="sr-only">First Name</label>
<input type="text" name="firstName" id="inputFirstName"
class="form-control ${(firstNameError??)?string('is-invalid','')}"
placeholder="First Name" required autofocus>
<div class="text-left invalid-feedback m-1 ml-1">
<#if (firstNameError)??>
${firstNameError}
</#if>
</div>
因此,當我對用戶的名字出錯時 - 我的輸入將類更改為并突出顯示有錯誤的欄位,之后它會在 div 中顯示一條錯誤訊息
現在我使用 Thymeleaf 作為模板引擎。要顯示我使用的錯誤文本
<div th:if="${firstNameError}" class="invalid-feedback">
<a th:text="${firstNameError}"></a>
</div>
但是,我怎么能dynamicaly改變class的<input...與錯誤的亮點惡魔?
謝謝!
uj5u.com熱心網友回復:
您可以th:classappend像這樣使用 thymeleaf classappend :
<input type="text" name="firstName" id="inputFirstName" th:classappend="${condition} ? conditionTrueClass : conditionFalseClass "/>
請看這個答案。
uj5u.com熱心網友回復:
您需要在類中使用條件陳述句來評估它是否應該使用“錯誤類”
例子:
<p th:if="${#fields.hasErrors('age')}" th:class="${#fields.hasErrors('age')}? error">Invalid Age</p>
<style>
.error {
color: red;
}
</style>
另一個 Thymeleaf 屬性 th:errors 使我們能夠在指定的選擇器上顯示所有錯誤,比如電子郵件:
<div>
<label for="email">Email</label> <input type="text" th:field="*{email}" />
<p th:if="${#fields.hasErrors('email')}" th:errorclass="error" th:errors="*{email}" />
</div>
參考:https : //www.baeldung.com/spring-thymeleaf-error-messages
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352835.html
