Проверка на стороне сервера с использованием весенней загрузки и тимелиста в модальной форме - PullRequest
0 голосов
/ 21 января 2019

Я только изучаю весеннюю загрузку и тимелист, я знаю, что мне нужно выполнить проверку внутри модальной формы, без перенаправления, просто запутаться на этом шаге.

Моя модель класса

public class Class {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotEmpty
    @NotBlank
    private String className;

    public Class(@NotEmpty @NotBlank String className) {
        this.className = className;
    }
}

Html Передний, чтобы показать модальный

<div class="modal fade" id="addModal" tabindex="-1" th:fragment="modal-add" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                            <h5 class="modal-title" id="exampleModalLabel">Add Classroom</h5>
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                <span aria-hidden="true">&times;</span>
                            </button>
                        </div>
                        <form th:action="@{/addclass}" th:object="${class}" method="post">
                        <div class="modal-body">
                            <div class="form-group">
                                <label for="className">Class Name</label>
                                <input type="text" class="form-control" id="className" th:field="*{className}" placeholder="Name of Class">
                                <div class="text text-danger" th:if="${#fields.hasErrors('className')}" th:errors="*{className}">
                            </div>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                            <button type="submit" value="Save" class="btn btn-primary">Save</button>
                        </div>
                        </form>
                    </div>
                </div>
            </div>

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

@PostMapping("/addclass")
    public String addClass(@Valid @ModelAttribute("class") Class kelas, BindingResult result) {
        if(result.hasErrors()) {
            //what to do here ? to show error validation without closing modal?

        }else{
            classService.addClass(kelas);
        }
        return "redirect:/classlist";
    }

Ответы [ 2 ]

0 голосов
/ 21 января 2019

В методе addClass вы должны вернуть представление вида.

 if(result.hasErrors()) {
        return "login";
    }

Логин - это страница, на которой вы показываете страницу входа.На странице входа вы должны обработать ошибку, похожую на:

<span th:if="${#fields.hasErrors('className')}" th:errors="*{className}">Class name Error</span>
0 голосов
/ 21 января 2019

Не ясно, чего вы пытаетесь достичь;так что это общий ответ на основе вашего кода.Если есть какая-либо ошибка, просто прикрепите ее, если хотите, и вернитесь только к исходному отображению.Он не будет перенаправлен на любую другую страницу и покажет ошибку на веб-странице.Пример кода в соответствии с вашим кодом - -

@PostMapping("/addclass")
public String addClass(@ModelAttribute("class") @Valid Class kelas, BindingResult result) {
       if(result.hasErrors()) {
            return "addClass";    
        }
        //else is not required here. If there are errors, it is returned before reaching here anyways.
        classService.addClass(kelas);
        return "redirect:/classlist";
}

Ваш HTML должен быть похож (Только часть ошибки) -

<div class="text text-danger" th:if="${#fields.hasErrors('className')}" th:errors="*{className}">
      <p>Incorrect Class Name</p>
</div>

Вы также можете указать сообщения об ошибках в самом модальном классе илиapplication.properties или конечный статический класс и отправьте его вместе с ответом.

Несколько новых точек, как только вы новичок - избегайте использования имени в качестве класса для имен классов.Это будет сбивать с толку на более позднем этапе и не является хорошей практикой.Используйте правильное имя класса, то есть то, что должен представлять этот модальный класс.во-вторых, я считаю, что @NotEmpty и @NotBlank также не требуются в конструкторе.

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