форма: ошибки не отображают ошибки на JSP в Spring - PullRequest
0 голосов
/ 20 декабря 2018

Я не могу получить сообщения об ошибках валидации, которые будут показаны на странице JSP.Проверка работает, но сообщения не отображаются вообще.

Класс SystemValidator:

  @Override
public void validate(Object target, Errors errors) {
    SystemUser systemUser = (SystemUser) target;

    SystemUser user = systemUserRepository.findByUsername(systemUser.getUsername());

    if (user != null && !(user.getId() == systemUser.getId()) || superUserName.equalsIgnoreCase(systemUser.getUsername())) {
        errors.rejectValue("username", "Duplicate Username");
    }

}

представление:

    <form:form method="post" modelAttribute="user" action="addUser">
            <div class="form-group">
                <label for="username" class="col-form-label">User Name</label>
                <form:input type="text" required="required" class="form-control" id="username" path="username"/>
                <form:errors path = "username" cssClass = "error" />
            </div>
            <form:input type="hidden" id="id" name="id" path="id"/>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
            <button type="submit" class="btn btn-primary">Submit</button>
        </div>
        </form:form>

класс контроллера:

    @RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String saveUser(Model model, @Validated @ModelAttribute("user") SystemUser user, BindingResult result) {

    logger.info("User save/update request received [{}]", user.toString());
    if (result.hasErrors()) {
        loadData(model);
        model.addAttribute("user", user);
        return "users";
    }

    systemUserService.saveSystemUser(user);
    loadData(model);
    return "users";
}
    private void loadData(Model model) {
    model.addAttribute("users", systemUserService.getAllUsers());
    model.addAttribute("user", new SystemUser());
}

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Не делать model.addAttribute("user", new SystemUser()); при возникновении ошибки проверки.

Изменить на это:

if (result.hasErrors()) {
    loadData(model, user);
    return "users";
}

И:

private void loadData(Model model, User user) {
    model.addAttribute("users", systemUserService.getAllUsers());
    model.addAttribute("user", user);
}
0 голосов
/ 20 декабря 2018

Используйте @Valid вместо @Validated, как показано ниже.

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String saveUser(@Valid @ModelAttribute("user") SystemUser user, BindingResult result,Model model)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...