Thymeleaf表单验证的唯一值,如何传递错误以查看

5 java spring thymeleaf spring-boot

我正在为我的申请创建注册表。我想检查用户名是否唯一。我这样做

@Transactional
@RequestMapping(value = "/users/", method = RequestMethod.POST)
public String createUser(@ModelAttribute("user") @Valid User user, BindingResult bindingResult){


    if (bindingResult.hasErrors() || !userService.isUniqueUsername(user)) {
        ModelAndView modelAndView = new ModelAndView("redirect:/admin/createnew");
        modelAndView.addObject(bindingResult.getFieldErrors());
        ObjectError objectError = new ObjectError("ERROR", "Username exists!");
        bindingResult.addError(objectError);
        return "user-create";
    }
Run Code Online (Sandbox Code Playgroud)

我知道我的逻辑在这里是错误的,因为我没有将绑定结果提供给“用户创建”视图。

<div th:if="${#fields.hasErrors('username')}" th:errors="*{username}">
    <p class="bg-danger text-center">Username error!</p>
</div>
Run Code Online (Sandbox Code Playgroud)

所以atm我只能显示诸如@NotNull和@Size之类的注释中的错误,但是我如何传递信息以查看服务器说的用户名不是唯一的呢?

cra*_*aro 0

我认为实现目标的最佳方法应该是进行自定义验证,然后页面流程将继续保持不变。

在这里我将向您分享如何创建自己的验证的链接(只需创建一个注释并实现 isValid 方法)

http://codetutr.com/2013/05/29/custom-spring-mvc-validation-annotations/