SpringBoot——对表单做数据校验

SpringBoot 中使用了 Hibernate-validate 校验框架

校验规则

  1. @NotBlank: 判断字符串是否为 null 或者是空串(去掉首尾空格)。
  2. @NotEmpty: 判断字符串是否 null 或者是空串。
  3. @Length: 判断字符的长度(最大或者最小)
  4. @Min: 判断数值最小值
  5. @Max: 判断数值最大值
  6. @Email: 判断邮箱是否合法

SpringBoot 表单数据校验步骤

1.在实体类中添加校验规则

public class Users {
    @NotBlank(message = "用户名不能为空")
    private String name;
    @Min(12)
    @NotNull
    private Integer age;
    private String password;

    /*getter and setter*/
}

2.在 Controller 中开启校

package com.zth.controller;

import com.zth.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;

/**
 * @author zth
 * @Date 2019-07-25 11:25
 */
@Controller
public class UsersController {
    /**
     * 页面跳转
     */
    @RequestMapping("/addUser")
    public String showPage(){
        return "add";
    }
    
    /**
     * 添加用户
     * @Valid 开启对 Users 对象的数据校验
     * @param result 封装了校验的结果
     */
    @RequestMapping("/save")
    public String addUser(@Valid Users users, BindingResult result){
        if (result.hasErrors()){
            return "add";
        }
        System.out.println(users);
        return "ok";
    }
}

3. 在页面中获取提示信息

add.html: 提交添加用户表单

<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head>
	<meta charset="UTF-8">
	<title>添加用户</title>
</head>
<body>
<center>
	<form th:action="@{/save}" method="post">
		用户姓名:<input type="text" name="name"/>
        <font color="red" th:errors="${users.name}"></font><br/>
        用户年龄:<input type="text" name="age" />
        <font color="red" th:errors="${users.age}"></font><br/>
		用户密码:<input type="password" name="password" /><br>
        <input type="submit" value="OK"/>
	</form>
</center>
</body>
</html>

ok.html: 操作成功页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>操作提示页面</title>
</head>
<body>
	操作成功!!!
</body>
</html>

4. 遇到异常

5. 解决方法

在跳转页面的方法中注入一个对象,来解决问题。要求参数对象的变量名必须是对象的类名的全称首字母小写。

 /**
     * 页面跳转
     * 由于 springmvc 会将该对象放入到 Model 中传递。
     * key 的名称会使用该对象的驼峰式的命名规则来作为 key。
     * 参数的变量名需要与对象的名称相同。将首字母小写
     */
    @RequestMapping("/addUser")
    public String showPage(Users user){
        return "add";
    }

6. 运行效果:

 

7. 改变参数的名称

使用 @ModelAttribute("aa")

package com.zth.controller;

import com.zth.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;

/**
 * @author zth
 * @Date 2019-07-25 11:25
 */
@Controller
public class UsersController {
    /**
     * 页面跳转
     * 由于 springmvc 会将该对象放入到 Model 中传递。
     * key 的名称会使用该对象的驼峰式的命名规则来作为 key。
     * 参数的变量名需要与对象的名称相同。将首字母小写
     *
     * 如果想为传递的对象更改名称,可以使用@ModelAttribute("aa")这表示当
     * 前传递的对象的 key 为 aa。
     */
    @RequestMapping("/addUser")
    public String showPage(@ModelAttribute("aa") Users user){
        return "add";
    }

    /**
     * 添加用户
     * @Valid 开启对 Users 对象的数据校验
     * @param result 封装了校验的结果
     */
    @RequestMapping("/save")
    public String addUser(@ModelAttribute("aa") @Valid Users users, BindingResult result){
        if (result.hasErrors()){
            return "add";
        }
        System.out.println(users);
        return "ok";
    }
}
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head>
	<meta charset="UTF-8">
	<title>添加用户</title>
</head>
<body>
<center>
	<form th:action="@{/save}" method="post">
		用户姓名:<input type="text" name="name"/>
        <font color="red" th:errors="${aa.name}"></font><br/>
        用户年龄:<input type="text" name="age" />
        <font color="red" th:errors="${aa.age}"></font><br/>
		用户密码:<input type="password" name="password" /><br>
        <input type="submit" value="OK"/>
	</form>
</center>
</body>
</html>

 

 

### 瑞吉外卖 Spring Boot 示例教程 #### 3.1 Redis集成配置 为了使瑞吉外卖项目能够利用Redis作为缓存机制,在项目的`pom.xml`文件中需引入相应的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 此操作确保了应用程序可以访问并操作Redis数据库,从而实现高效的键值存储功能[^1]。 #### 3.2 MyBatis Plus公共字段自动填充 针对分类管理模块中的实体对象,MyBatis Plus框架提供了便捷的方法来设置创建时间和更新时间等通用属性。通过定义一个处理器类,并借助于`ThreadLocal`变量保存当前用户的登录信息,可以在每次新增或修改记录时自动注入这些时间戳数据[^2]。 #### 3.3 分类管理业务逻辑详解 ##### 3.3.1 新增分类 对于新添商品类别这一流程,前端页面提交表单后会触发后台接口调用。服务层负责验证参数合法性以及执行具体的入库动作;而控制层则主要承担接收请求参数并将响应结果返回给客户端的任务。此外,还需考虑如何处理可能发生的各种异常情况,比如重复名称检测失败等问题。 ##### 3.3.2 分页查询 当用户希望浏览已有的菜品分类列表时,系统应支持按条件筛选和分页展示的功能。这涉及到前后端交互的设计——前端发送带有过滤器选项(如关键字匹配)及页码偏移量的AJAX请求至服务器;后者依据传入的信息构建SQL语句进行检索,并最终组装成JSON格式的数据集反馈回去显示在界面上。 ##### 3.3.3 删除与编辑分类 删除指定ID对应的条目前要先确认其是否存在关联子项以免造成孤儿记录现象;至于编辑,则是在保留原有结构的基础上允许更改部分内容而已。无论是哪种情形下都离不开细致严谨的服务端编程工作,包括但不限于事务管理和权限校验等方面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值