spring boot的表单效验以及错误返回

1.创建实体类

@Entity
public class User implements UserDetails, Serializable {
    public User() {
    }

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

    @Column(unique = true,nullable = false)
    @Pattern(message = "用户名必须是6-16位数字或英文的组合",regexp = "^[0-9a-zA-Z]{6,16}$")
    private String username;

    @Column
    @Length(min = 6,max = 16,message = "密码长度为6-16位")
    private String password;

    @Column
    private String sex;

    @Column
    @Email(message = "邮箱格式错误")
    private String email;

    @Column
    private String only_id; //专属码

    @Column
    private String us_time; //纪念日

    @ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinTable(name = "user_role",joinColumns = @JoinColumn(name="user_id",referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(name = "role_id",referencedColumnName = "id"))
    private List<Role> roles;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return roles;
    }

    @Override
    public String getPassword() {
        return password;
    }

    @Override
    public String getUsername() {
        return username;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getOnly_id() {
        return only_id;
    }

    public void setOnly_id(String only_id) {
        this.only_id = only_id;
    }

    public String getUs_time() {
        return us_time;
    }

    public void setUs_time(String us_time) {
        this.us_time = us_time;
    }

    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2.添加控制器以及开启效验
添加@Validated注解
在这里插入图片描述
在这里插入图片描述
在进入注册界面的方法添加一个对象,如果不添加,就会报如下错误
在这里插入图片描述
3.注册界面
th:errors的报错不用管,不影响

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- 新 Bootstrap4 核心 CSS 文件 -->
    <link rel="stylesheet" href="/webjars/bootstrap/4.3.1/css/bootstrap.min.css">

    <!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
    <script src="/webjars/jquery/3.3.1/jquery.min.js"></script>

    <!-- 最新的 Bootstrap4 核心 JavaScript 文件 -->
    <script src="/webjars/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container-fluid">
<form action="#" th:action="@{/registerUI}"method="post" th:method="post">
    <div class="form-group">
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username" class="form-control" autofocus="autofocus" autocomplete="off">
        <span th:if="${#fields.hasErrors('user.username')}" th:errors="${user.username}"></span>
    </div>

    <div class="form-group">
        <label for="password">密码:</label>
        <input type="password" id="password" name="password" class="form-control">
        <span th:if="${#fields.hasErrors('user.password')}" th:errors="${user.password}"></span>
    </div>

    <div class="form-group">
        <label for="us_time">纪念日:</label>
        <input type="text" id="us_time" name="us_time" autocomplete="off" class="form-control">
        <span th:if="${#fields.hasErrors('user.us_time')}" th:errors="${user.us_time}"></span>
    </div>

    <div class="form-group">
        <label for="email">email:</label>
        <input type="text" id="email" name="email" autocomplete="off" class="form-control">
        <span th:if="${#fields.hasErrors('user.email')}" th:errors="${user.email}"></span>
    </div>

    <div class="form-group">
        <label for="only_id">专属码:</label>
        <input type="text" id="only_id" name="only_id" autocomplete="off" class="form-control">
        <span th:if="${#fields.hasErrors('user.only_id')}" th:errors="${user.only_id}"></span>
    </div>

    <label class="radio-inline"><input type="radio" name="sex">男</label>
    <label class="radio-inline"><input type="radio" name="sex">女</label>

    <div class="form-group">
        <div class="offset-md-5">
            <button type="submit" class="btn">提交</button>
        </div>
    </div>
</form>
</div>

<!--<ul th:if="${#fields.hasErrors('*')}">
    <li th:each="err : ${#fields.errors('*')}" th:text="${err}">Input is incorrect</li>
</ul>-->

<div th:include="~{footer::footer}"></div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值