SpringMVC表单验证器的使用

转载自 SpringMVC表单验证器的使用

本章讲解SpringMVC中怎么通过注解对表单参数进行验证。

SpringBoot配置

使用springboot, spring-boot-starter-web会自动引入 hiberante-validator, validation-api依赖。

WebMvcConfigurerAdapter实现类里面添加验证器及国际化指定资源文件。

@Override
public Validator getValidator() {LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();validator.setValidationMessageSource(messageSource());return validator;
}

@Bean
public 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-apijar包下的 javax.validation.constraints包。

SpringMVC控制器:

@PostMapping(value = "/login")
public String login(@Validated LoginForm form) {
...
}

使用 @Validated注解表示该参数需要验证。

国际化

message里面 {}引用的是国际化的资源。

添加国际化资源文件:

ValidationMessages.propertiesValidationMessageszhCN.properties

需要指定编码为 ASCII,不然会乱码。

异常处理

异常全局处理时进行处理:

@ControllerAdvice
public class ExceptionResolver {

    @ExceptionHandler(Throwable.class)@ResponseBodyObject 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) {
...
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转-Kafka【第一篇】Kafka集群搭建

转自&#xff1a; https://www.cnblogs.com/luotianshuai/p/5206662.html Kafka【第一篇】Kafka集群搭建 Kafka初识 1、Kafka使用背景 在我们大量使用分布式数据库、分布式计算集群的时候&#xff0c;是否会遇到这样的一些问题&#xff1a; 我们想分析下用户行为&#xf…

Angular 应用解决跨域访问的问题

设置反向代理 原理是设置反向代理服务器&#xff0c;让 Angular 应用都访问自己的服务器中的API&#xff0c;而这类API都会被反向代理服务器转发到 Java 服务API中&#xff0c;而这个过程对于 Angular 应用是无感知的。 业界经常是采用 NGINX 服务来承担反向代理的职责。而在 …

57张PPT彻底搞清楚区块链技术。。

转载自 57张PPT彻底搞清楚区块链技术。。

如何基于tomcat构建web站点

修改 conf/server.xml 配置&#xff0c; 如下&#xff1a; <Server port"8005" shutdown"SHUTDOWN"><Service name"Catalina111"><Connector port"8080" protocol"HTTP/1.1"connectionTimeout"20000&q…

小程序实现圆饼图

效果图 预备知识 CanvasContext.createCircularGradient(number x, number y, number r) 创建一个圆形的渐变颜色。起点在圆心&#xff0c;终点在圆环。返回的CanvasGradient对象需要使用 CanvasGradient.addColorStop() 来指定渐变点&#xff0c;至少要两个。&#xff08;详细…

一分钟开启Tomcat https支持

转载自 一分钟开启Tomcat https支持1、修改配置文件 打开tomcat/conf/server.xml配置文件&#xff0c;把下面这段配置注释取消掉&#xff0c; keystorePass为证书密钥需要手动添加&#xff0c;创建证书时指定的。 <Connector port"8443" protocol"org.apache…

转:在eclipse中搭建maven工程(第二种方法)

转自 &#xff1a; https://blog.csdn.net/bug_moving/article/details/54178092&#xff1b; 第一种方法见前面的博客 用Maven创建web项目&#xff08;详细步骤&#xff09; maven-3.3.9 下载之后就是配置环境变量&#xff0c;可以去百度一哈&#xff0c;用MAVEN_HOME配置…

Spring Boot - Profile不同环境配置

转载自 Spring Boot - Profile不同环境配置Profile是什么 Profile我也找不出合适的中文来定义&#xff0c;简单来说&#xff0c;Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。 Profile使用 假如有开发、测试、生产三个不同的环境&#xff0c;需要定义三…

Java Springboot应用部署

流程&#xff1a; 在pom.xml中加入以下配置 (引入springboot打包插件 spring-boot-maven-plugin ): <project ...><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin<…

转:Tomcat启动失败 提示Server Tomcat v7.0 Server at localhost failed to start.六种解决方法

转&#xff1a;https://my.oschina.net/u/4391471/blog/3298034 Tomcat启动失败&#xff0c;提示Server Tomcat v7.0 Server at localhost failed to start 在一次查看自己以前写过的项目中&#xff0c;运行tomcat失败&#xff0c;出现如图提示 然而自己之前的项目运行时候都…

Java SE 知识点

数组(Array)和列表(ArrayList)的区别&#xff1f;什么时候应该使用Array而不是ArrayList&#xff1f; Array和ArrayList的不同点&#xff1a; Array可以包含基本类型和对象类型&#xff0c;ArrayList只能包含对象类型。Array大小是固定的&#xff0c;ArrayList的大小是动态变化…

Spring Boot定制启动图案

转载自 Spring Boot定制启动图案启动图案 Spring Boot在启动的时候会显示一个默认的Spring的图案&#xff0c;对应的类为SpringBootBanner。. ____ _ __ _ _ /\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | _ | _| | _ \/ _ | \ \ \ \ \\/ ___)| |…

servlet设置cookie实验

【README】 本文旨在 通过servlet 设置cookie &#xff0c;查看cookie长什么样子&#xff0c;来达到了解cookie的目的&#xff1b; cookie作用&#xff1a; 因为http协议是无状态的&#xff0c;要想维护web访问的状态&#xff0c;就需要使用专门的技术解决。cookie 是一种在客…

Java 集合类

List&#xff1a;一种有序列表的集合Set&#xff1a;一种保证没有重复元素的集合Map&#xff1a;一种通过键值&#xff08;key-value&#xff09;查找的映射表集合 Java集合的设计有几个特点&#xff1a;一是实现了接口和实现类相分离&#xff0c;例如&#xff0c;有序表的接口…

Spring MVC常用注解,你会几个?

转载自 Spring MVC常用注解&#xff0c;你会几个&#xff1f;常用注解 Controller 注解一个类表示控制器&#xff0c;Spring MVC会自动扫描标注了这个注解的类。 RequestMapping 请求路径映射&#xff0c;可以标注类&#xff0c;也可以是方法&#xff0c;可以指定请求类型&…

转:常用的几种加密算法以及java实现

转自&#xff1a; https://blog.csdn.net/wqwqwqwq403/article/details/103948952 工作中经常会接触到一些加密算法&#xff0c;比如说base64、MD5、DES、AES等等&#xff0c;那么这些算法到底有什么区别以及具体的应用场景是什么呢&#xff0c;下面就做个简要的梳理。 一、什…

JAVA 实现 JWT

引入JWT依赖,由于是基于Java&#xff0c;所以需要的是java-jwt <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version> </dependency>自定义注解用于判断是否需要验证 用来跳…

SaaS,PaaS,IaaS都是什么鬼

转载自 SaaS,PaaS,IaaS都是什么鬼IaaS Infrastructure as a Service&#xff0c;基础设施即服务。 假如你现在要做一个网站&#xff0c;你肯定要有一台服务器或者虚拟机&#xff0c;要么自己搭建&#xff0c;要么买服务器运营商的。说白了&#xff0c;IaaS就是解决企业硬件问题…

转:什么是 Base64编码

转&#xff1a; https://developer.aliyun.com/article/763589 一、定义 Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。为什么会有 Base64 编码呢&#xff1f;&#xff08;Base…

什么是Spring Boot?

转载自 什么是Spring Boot? 什么是Spring Boot? Spring Boot是Spring开源组织下的子项目&#xff0c;是Spring组件一站式解决方案&#xff0c;主要是简化了使用Spring的难度&#xff0c;简省了繁重的配置&#xff0c;提供了各种启动器&#xff0c;开发者能快速上手。 官方网站…