Spring 2 + Thymeleaf + Validation = Ошибка Whitelabel Страница 500 - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь проверить ввод моей формы, но после ее отправки он не загружает мой метод контроллера, вместо этого он показывает Whitelabel Error Page с Internal Server Error и статусом 500, но с правильными ошибками проверки.Я знаю, что это должно быть проблема с ожидаемыми параметрами моего метода, но пока я собрал правило, просто BindingResult затем Model, что я и сделал, но он все равно не запускает мой метод контроллера..

Любые мысли приветствуются.

Метод контроллера, который, к сожалению, не запущен:

@Controller
@Validated
public class UserController {
    @PostMapping("/users/add")
    def String usersAdd(@Valid @ModelAttribute("user") User user, BindingResult bindingResult, Model model) {
    if (bindingResult.hasErrors()) {
        return "userAdd"
    } else {
        userRepository.save(user)
        return "usersList"
    }
}

Форма шаблона:

<form action="#" th:action="@{/users/add}" th:object="${user}" method="post">
    <div class="form-row">
        <div class="form-group col-md-12">
            <input type="text" class="form-control" th:field="*{name}">
            <div th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</div>
        </div>
    </div>
    <div class="form-row">
        <div class="form-group col-md-6">
            <button type="submit" class="btn btn-success">Add</button>
        </div>
    </div>
</form>

Модель-класс:

@Document(collection = "users")
public class User {
    @Id
    String id
    @Size(min=3, max=100)
    String name
}

Обновление:

Пошел отладка и нашел эту часть, так что кажется, что этовызывая с правильными параметрами.Я новичок в весне, поэтому мне трудно думать о других проблемах "новичка".в InvocableHandlerMethod.java метод DoInvoke вызывается на моем usersAdd с Station, BeanPropertyBindingResult, BindingAwareModelMap.При вызове метода это вызывает ConstraintViolationException, который прервет вызов, это ожидается?

1 Ответ

0 голосов
/ 17 октября 2018

Я понял это после долгой сессии отладки.@Valid перед моим User user вызывает ConstraintViolationException, что, как ожидается, прервет вызов моего usersAdd, поскольку, как и ожидалось, параметр недопустим.И причиной этого поведения была @Validated в классе контроллера, которую я взял из некоторого учебного пособия, но после удаления все работает и проверяется, как и ожидалось.Я думаю, что я проверял REST-Tutorial и пытался использовать их подход ... не самая лучшая идея;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...