SpringMVC表单验证器
来源:互联网 发布:c语言转义字符怎么用 编辑:程序博客网 时间:2024/06/15 08:44
本章讲解SpringMVC中怎么通过注解对表单参数进行验证。
SpringBoot配置
使用springboot,spring-boot-starter-web
会自动引入hiberante-validator
,validation-api
依赖。
在WebMvcConfigurerAdapter
实现类里面添加验证器及国际化指定资源文件。
@Overridepublic Validator getValidator() { LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean(); validator.setValidationMessageSource(messageSource()); return validator;}@Beanpublic MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasename("i18n/ValidationMessages"); messageSource.setDefaultEncoding(StandardCharsets.US_ASCII.name()); return messageSource;}
验证器使用
接收参数的表单类:
public class LoginForm { @NotNull(message = "{login.loginName.length}") @Size(min = 4, max = 20, message = "{login.loginName.length}") private String loginName; @NotNull(message = "{login.loginPassword.length}") @Size(min = 8, max = 20, message = "{login.loginPassword.length}") private String loginPassword; public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getLoginPassword() { return loginPassword; } public void setLoginPassword(String loginPassword) { this.loginPassword = loginPassword; }}
在要验证的字段上面加入验证注解,更多参考validation-api
jar包下的javax.validation.constraints
包。
SpringMVC控制器:
@PostMapping(value = "/login")public String login(@Validated LoginForm form) {...}
使用@Validated
注解表示该参数需要验证。
国际化
message里面{}
引用的是国际化的资源。
添加国际化资源文件:
ValidationMessages.properties
ValidationMessages_zh_CN.properties
需要指定编码为ASCII
,不然会乱码。
异常处理
异常全局处理时进行处理:
@ControllerAdvicepublic class ExceptionResolver { @ExceptionHandler(Throwable.class) @ResponseBody Object handleEntityException(HttpServletRequest request, Throwable ex) { ... if (ex instanceof BindException) { BindException c = (BindException) ex; List<ObjectError> errors = c.getBindingResult().getAllErrors(); StringBuilder errorMsg = new StringBuilder(); errors.forEach(x -> errorMsg.append(x.getDefaultMessage()).append(",")); } ... }}
或者在验证的类后面加BindingResult
,错误信息都会放在该对象里面,而不会抛出异常。如:
@PostMapping(value = "/login")public String login(@Validated LoginForm form, BindingResult bindingResult) {...}
推荐阅读
什么是Spring Boot?
Spring Boot开启的2种方式
Spring Boot Starters启动器
Spring Boot定制启动图案
Spring Boot核心配置
Spring Boot功能实战
Spring Boot自动配置原理、实战
Spring Boot Runner启动器
Spring Boot - Profile不同环境配置
看完有没有收获?分享到朋友圈给更多的人吧。
![](http://upload-images.jianshu.io/upload_images/5954965-bd8572774b5fc65d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
阅读全文
0 0
- SpringMVC表单验证器
- SpringMVC—表单验证
- springMVC+freeMarker表单验证
- SpringMVC-表单验证
- SpringMVC 表单验证
- springMVC 表单验证
- SpringMVC 表单验证
- SpringMVC表单验证
- Springmvc的表单验证
- 使用SpringMVC的表单验证
- SpringMVC的表单验证方式
- SpringMVC接口----表单参数验证
- SpringMVC-InitBinder验证-对表单数据验证
- SpringMVC使用@Valid注解表单验证数据
- 表单验证器
- springmvc拦截器验证
- springMVC基于hibernate validator的表单验证示例
- bootstrap+springMVC中使用bootstrapValidator实现表单验证(附源码!!!)
- Intellij Idea非常6的10个姿势!
- 细数Intellij Idea10个蛋疼问题!
- 一分钟开启Tomcat https支持
- 省市二级及联动(省市对应数组)
- Spring MVC常用注解
- SpringMVC表单验证器
- 阿里巴巴Java开发手册(终极版)
- 2017年,Java程序猿10本经典好书推荐
- 高级Java必看的10本书
- 常见的3种Class级别的错误
- 关于Java序列化你应该知道的一切
- fastjson 多级联属性过滤
- Lazy loading NSBundle MobileCoreServices.framework, Loaded MobileCoreServices.framework, System gr
- Java高级进阶:自定义ClassLoader