我正在開發 Spring mvc Web 應用程式。在應用程式中,我在注冊表單中@NotBlank的欄位上放置了驗證注釋。username我填寫該username欄位并單擊Submit按鈕,當我收到驗證錯誤訊息時,但我填寫了username欄位,所以為什么在欄位BindingResult后面產生錯誤,如果插入少于 3 個或大于 12 個字符,我的注釋不起作用。username@Size
下面是代碼:
物體:
public class Registration {
@NotBlank(message = "Username can not be empty !")
@Size(min = 3, max = 12, message = "Username must be in 3 to 12 character") // Not working
private String username;
private String email;
private Boolean agree;
// constructor, getter, setter and toString()
}
控制器:
@GetMapping("/form")
public String formPage(Model mdl)
{
mdl.addAttribute("registration", new Registration());
return "form";
}
@PostMapping("/register")
public String registerUser(@Valid @ModelAttribute("registration") Registration registration,
BindingResult result)
{
if(result.hasErrors())
{
System.out.println(result);
return "form";
}
return "success";
}
表單.html:
<form class="bg-white p-5" th:action="@{/register}" method="post" th:object="${registration}">
<h1 class="text-center pt-2 pb-2">Signup Form</h1>
<div class="mb-3">
<label for="username" class="form-label">Username</label>
<input type="text"
class="form-control"
th:value="${registration.username}"
id="username" />
<p th:each="error : ${#fields.errors('username')}" th:text="${error}">
</p>
</div>
<div class="mb-3">
<label for="email" class="form-label">Email address</label>
<input type="text"
class="form-control"
id="email"
th:value="${registration.email}"
aria-describedby="emailHelp" />
</div>
<div class="mb-3 form-check">
<input type="checkbox"
class="form-check-input"
id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
用于驗證的 XML:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
問題快照:

uj5u.com熱心網友回復:
問題就在這里
<input type="text"
class="form-control"
th:value="${registration.username}"
id="username"/>
您缺少該name屬性。
<input type="text"
class="form-control"
th:value="${registration.username}"
id="username"
name="username"/>
這將解決它。
表單通常系結到一個物件 -Registration在您的情況下,使用標簽的name屬性。注釋正在作業,問題是由于缺少屬性input,您正在接收null用戶名。Registration
uj5u.com熱心網友回復:
您的輸入需要使用系結語法*{..}。代替:
<input type="text"
class="form-control"
th:value="${registration.username}"
id="username" />
和:
<input type="text"
class="form-control"
th:value="*{username}"
id="username" />
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/445640.html
