问题描述
我有一个试图验证的简单注册表格,但没有成功。表单绑定到具有某些javax.validation.constraints的bean“用户”。
当我手动拒绝一个值时,BindingResult和错误的显示可以正常工作,尽管例如,在用户未填写@NotBlank字段时,它们不能按预期工作。它只是忽略它,BindingResult不包含任何错误并继续前进。
代码如下:
表格
<form th:action="@{/account/new}" th:object="${user}" method="post">
<table>
<tr>
<td>Nome:</td>
<td><input type="text" th:field="*{name}" /></td>
<td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td>
</tr>
<tr>
<td>Cognome:</td>
<td><input type="text" th:field="*{lastname}" /></td>
<td th:if="${#fields.hasErrors('lastname')}" th:errors="*{lastname}">Cognome Error</td>
</tr>
<tr>
<td>Email:</td>
<td><input type="email" th:field="*{email}" /></td>
<td th:if="${#fields.hasErrors('email')}" th:errors="*{email}">Email Error</td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" th:field="*{password}" /></td>
<td th:if="${#fields.hasErrors('password')}" th:errors="*{password}">Password Error</td>
</tr>
<tr>
<td><button type="submit">Invia</button></td>
</tr>
</table>
</form>
用户bean
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.util.Set;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
public enum Role {
ADMIN,UTENTE;
}
@Id private String id;
@NotBlank private String name;
@NotBlank private String lastname;
@Email private String email;
@NotBlank @NotEmpty private Set<Role> roles;
@NotBlank private String username;
@NotBlank @Size(min=8) private String password;
@NotBlank private boolean active;
}
控制器
@PostMapping("/account/new")
public String saveUser(@Valid User user,BindingResult bindingResult,Model model) throws Exception {
userRepository.findByEmail(user.getEmail())
.ifPresent( s -> { bindingResult.rejectValue("email","error.user","There is already a user registered with this email"); });
if (bindingResult.hasErrors()) {
model.addAttribute("user",user);
return "registration";
}
userService.saveNewUser(user);
return "registration-need-confirmation";
}
我想念什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)