тимелист не показывает ошибок формы .. (весна + тимелист) - PullRequest
0 голосов
/ 01 августа 2020

Итак, я изучил Spring и Thymeleaf и создал систему регистрации и входа в систему.

Итак, я хочу, чтобы моя регистрационная форма была проверена, прежде чем кто-либо сможет ее отправить. Вот как я сконфигурировал свой класс модели пользователя.

@Entity
public class User {
    @Id
    @Column(nullable = false)
    @Size(min=4, max=32, message="Username name must be between 4 and 32 characters")
    private  String username;
    @Column(nullable = false)
    @Size(min=8, max=32, message="Password must be between 8 and 32 characters")
    @Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,10}$+",
                message = "Your password must contain at least one uppercase letter, one lowercase letter, " +
                        "one number and one special character")
    private  String password;
    @Column(nullable = false)
    @Email(message="Please enter a valid email")
    private String email;
    private  boolean isAccountNonExpired;
    private  boolean isAccountNonLocked;
    private  boolean isCredentialsNonExpired;
    private  boolean isEnabled;
    private String roles;
    private String permissions;

Вот мой контроллер, который обрабатывает запросы на получение и публикацию.

    @GetMapping("register")
    public String getRegisterView(Model model){
        model.addAttribute("user", new User());
        return "register";
    }

    @PostMapping("register")
    public String postRegisterView(@Valid User user, Model model, BindingResult bindingResult){
        model.addAttribute("user", user);
        if (bindingResult.hasErrors()) {
            return "register";
        }
        applicationUserService.setupUser(user);
        return "redirect:index";
    }

и вот мой html файл , который проверяет наличие ошибок и распечатывает их

            <form class="form-register" method="POST" th:action="@{/register}" th:object="${user}">
                <h2 class="form-register-heading">register</h2>
                <p>
                    <label for="username" class="sr-only">Username</label>
                    <input th:field="*{username}" type="text" id="username" name="username" class="form-control-lg" placeholder="Username" required autofocus>
                    <small><span th:if="${#fields.hasErrors('username')}" th:errors="*{username}">Full name error</span></small>
                </p>
                <p>
                    <label for="username" class="sr-only">Email</label>
                    <input type="email" th:field="*{email}" id="email" name="username" class="form-control-lg" placeholder="Email" required>
                    <small><span th:if="${#fields.hasErrors('email')}" th:errors="*{email}">Full name error</span></small>
                </p>
                <p>
                    <label for="email-confirm" class="sr-only">Confirm Email</label>
                    <input type="email" id="email-confirm" name="email-confirm" class="form-control-lg" placeholder="Confirm Email" required>
                </p>
                <p>
                    <label for="password" class="sr-only">Password</label>
                    <input type="password" th:field="*{password}" id="password" name="password" class="form-control-lg" placeholder="Password" required>
                    <small><span th:if="${#fields.hasErrors('password')}" th:errors="*{password}">Full name error</span></small>
                <p>
                    <label for="confirm-password" class="sr-only">Confirm Password</label>
                    <input type="password" id="confirm-password" name="confirm-password" class="form-control-lg" placeholder="Confirm Password" required>
                </p>
                <input type="hidden" th:field="*{isAccountNonExpired}" th:value="true" id="isAccountNonExpired" name="isAccountNonExpired" class="form-control-lg"  required>
                <input type="hidden" th:field="*{isAccountNonLocked}" th:value="true" id="isAccountNonLocked" name="isAccountNonLocked" class="form-control-lg"  required>
                <input type="hidden" th:field="*{isCredentialsNonExpired}" th:value="true" id="isCredentialsNonExpired" name="isCredentialsNonExpired" class="form-control-lg"  required>
                <input type="hidden" th:field="*{isEnabled}" th:value="true" id="isEnabled" name="isEnabled" class="form-control-lg"  required>
                <input type="hidden" th:field="*{roles}" value="USER" id="roles" name="roles" class="form-control-lg"  required>
                <input type="hidden" th:field="*{permissions}" value="normalUser" id="permissions" name="permissions" class="form-control-lg"  required>
                <button class="btn btn-lg btn-custom btn-block roboto" type="submit">Register</button>
            </form>

По сути, это очень простая форма, которая просто извлекает объект из введенных значений, а затем я сохраняю их в своем репозитории.

enter image description here

The issue is none of the validations are being applied by and I can basically input whatever I feel like and it's being saved to the repo...

Скриншот базы данных

Я просмотрел все онлайн-ссылки и решения, ни одно из них не помогло в моем случае.

...