Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Thymeleaf表单唯一值验证,如何将错误传递给视图_Java_Spring_Spring Boot_Thymeleaf - Fatal编程技术网

Java Thymeleaf表单唯一值验证,如何将错误传递给视图

Java Thymeleaf表单唯一值验证,如何将错误传递给视图,java,spring,spring-boot,thymeleaf,Java,Spring,Spring Boot,Thymeleaf,我正在为我的申请创建登记表。我想检查用户名是否唯一。我自己做 @Transactional @RequestMapping(value = "/users/", method = RequestMethod.POST) public String createUser(@ModelAttribute("user") @Valid User user, BindingResult bindingResult){ if (bindingResult.hasErrors() || !use

我正在为我的申请创建登记表。我想检查用户名是否唯一。我自己做

@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";
    }
我理解我的逻辑在这里是错误的,因为我没有将bindingresult提供给“user create”视图


用户名错误

所以我只能显示来自@NotNull和@Size等注释的错误
但是我怎样才能传递信息来查看服务器上说的用户名不唯一?

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

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


您可以将错误绑定到所需的任何字段

if (!form.getUsername().isEmpty() && accountService.exists(form.getUsername()))
      bindingResult.rejectValue("username", "error.username", "Username exists!");

使用FieldError对象代替ObjectError,并将其添加到绑定结果中。 验证:

if (influence.getInfluenceImage() == null || influence.getInfluenceImage().isEmpty()) {
    FieldError error = new FieldError("addInfluenceDTO", "influenceImage",
                                      "Influence Image should not be empty.");
    bindingResult.addError(error);
}
我认为:

<label th:if="${#fields.hasErrors('influenceImage')}" th:class="'error'" th:errors=*{influenceImage} class="col-lg-4 control-label" style="color:red;" ></label>

事实上,您只有一个常规错误,即您没有将其绑定到
用户名
字段。所以实际上一切都正常,但是你记录错误的方式是错误的。
<label th:if="${#fields.hasErrors('influenceImage')}" th:class="'error'" th:errors=*{influenceImage} class="col-lg-4 control-label" style="color:red;" ></label>