spring参数校验之validation的使用
2022/2/28 23:24:47
本文主要是介绍spring参数校验之validation的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
spring参数校验之validation的使用
1、在代码编写中,经常会遇到参数校验,包括:必填、正则,取值范围限制等
话不多说,上代码
@RestController @RequestMapping("/valida") public class ValidaZsgController{ @RequestMapping("/validaParam") public String validaParam(@Validated @RequestBody ValidaUser user, BindingResult result) throws Exception{ if (result.hasFieldErrors()) { String errorInfo = ValidationUtils.operateBindingResult(result); # 输出校验参数信息 System.out.println(errorInfo); } return "success"; } }
2、参数对象
import com.alibaba.fastjson.JSONObject; import com.example.demo.utils.CheckUrl; import com.example.demo.utils.MyCheck; import lombok.Data; import javax.validation.Valid; import javax.validation.constraints.*; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; @Data public class ValidaUser{ private final String reg = "^((http|https)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]"; # 整型,最大值与最小值限制 @Min(value = 0, message = "参数大小不可小于0") @Max(value = 2, message = "参数大小不可大于2") private int status; # String 类型限制指定参数(参数中只能是,‘张三’、’李四‘,或者'123456788') @Pattern(regexp = "张三|李四|123456788", message = "用户名称非指定") private String name; # 手机号(中国)校验 @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号不正确") private String phone; # 集合非空检验 @Size(min = 1, message = "最大长度不能超过3") @NotNull(message = "变量填写不能为空,请先填写变量!") private List<String> list; # 邮箱验证 @Email(message = "api.user.error") private String mail; # String必填校验 @NotBlank(message = "nickName不可输入为空") private String nickName; # 网址校验 此校验参数不可为 “”, 否则校验参数不通过 @Pattern(regexp = reg, message = "网址不对") private String contractCallBackUrl; # 嵌套对象的校验只能使用@Valid或者@Validated @Valid @NotNull(message = "validaInfo不可为空") private ValidaInfo validaInfo; @NotNull(message = "type不可为空") @Min(value = 0, message = "type超限") @Max(value = 2, message = "type超限") private Integer type; # 有参构造方法 可根据需要,进行参数校验 public ValidaUser(Short status, String name, String address, String phone, int age, List<String> list, String mail) { this.status = status; this.name = name; this.address = address; this.phone = phone; this.age = age; this.list = list; this.mail = mail; } }
import javax.validation.constraints.NotBlank; public class ValidaInfo { @NotBlank(message = "templateId不可为空") private String templateId; public String getTemplateId() { return templateId; } public void setTemplateId(String templateId) { this.templateId = templateId; } }
3、单元测试类
@RunWith(SpringRunner.class) @SpringBootTest @WebAppConfiguration @AutoConfigureMockMvc public class ValidaControllerTest { @Autowired private MockMvc mockMvc; @Test public void validaParam(){ List<String> list = Arrays.asList("1212", "1212", "1212", "1212", "1212", "1212", "1212", "1212", "1212", "1212", "1212", "1212"); ValidaUser validaUser = new ValidaUser((short) 3, "张三", "北京市", "13405608901", 11, list, "zsg18300000000@163.com"); try { mockMvc.perform(post("/valida/validaParam")//请求地址使用post方式请求 .content(JSON.toJSONString(validaUser)) .contentType(MediaType.APPLICATION_JSON_VALUE))//媒体类型为JSON // .andExpect(status().isOk());//返回状态为200 .andDo(print());// 打印请求和响应的详情 } catch (Exception e) { e.printStackTrace(); } } }
4、结果输出如下
这篇关于spring参数校验之validation的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南