Spring Validation用于验证@Controller输入。它用于检查和接受任何web应用程序中的用户输入。使用Spring验证,我们可以在服务器端验证用户输入。
Bean验证API
从Spring Framework Version4和更高版本来看,Spring框架支持Bean验证1.0(JSR-303)和Bean验证1.1(JSR-349)。
下面给出了用于验证的注释:
@Valid–@Valid注释用于注释方法参数、属性或方法返回类型以进行验证。它用于注释我们要验证的模型对象。
BindingResult–它是一个表示绑定结果的接口。它扩展了一个错误注册接口,允许应用验证器,并添加了特定于绑定的分析。
验证注释
springmvc表单验证中使用了多种注释,可以在javax.validation.constraints约束包裹。
以下是常用验证注释的列表:
Annotations |
Description |
@Size |
It specifies that the size of the annotated element must be between the specified boundaries. |
@Pattern |
它指定带注释的CharSequence必须与正则表达式匹配. |
@Past |
它指定带注释的元素必须是过去的日期. |
@Null |
它指定带注释的元素必须为null. |
@NotNull |
它指定带注释的元素不应为null. |
@Min |
它指定带注释的元素必须是一个值必须等于或大于指定的最小值的数字. |
@Max |
它指定带注释的元素必须是一个值必须等于或小于指定最大值的数字. |
@Future |
它指定带注释的元素必须是将来的日期 |
@Digits |
它指定带注释的元素必须是指定范围内的数字或数字。支持的类型有short、int、long、byte等. |
@DecimalMin |
它指定带注释的元素必须是一个值必须等于或大于指定最小值的数字。它与@Min注释非常相似,但唯一的区别是它支持CharSequence类型. |
@DecimalMax |
它指定带注释的元素必须是一个值应等于或小于指定最大值的数字。它与@Max annotation非常相似,但唯一的区别是它支持CharSequence类型. |
@AssertTrue |
它确定带注释的元素必须为true. |
@AssertFalse |
它确定带注释的元素必须为false. |
springmvc验证示例
这里,我们将在Controller类中使用@Valid注释创建一个springmvc验证的示例。
以下是创建Spring Validator示例的步骤:
创建请求页
在这一步中,我们将创建一个名为index.jsp.
index.jsp
<html>
<body>
<h2> Spring MVC Web application </h2>
<a href = "cust-regis-form"> Customer Registration Form </a>
</body>
</html>
在这一步中,我们将创建一个名为客户.java,存储数据。在Customer类中,我们将在“lname”变量上使用@NotNull和@Size注释。
Customer.java
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class Customer {
private String fname;
@NotNull
@Size(min = 3, message = " This field is required ")
private String lname;
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
}
创建Controller
在这一步中,我们将创建名为MainController.java,返回JSP视图页。在控制器类中,我们将使用@Valid注解和BindingResult进行验证。
MainController.java
将控制器条目添加到Web.xml
在这一步中,我们将在Web.xml文件。
web.xml
在这一步中,我们将把Model/bean定义到另一个名为spring的XML文件中spring-servlet.xml.
spring-servlet.xml
创建其他JSP页面
在这一步中,我们将创建其他视图页面(JSP页面)。
customerform.jsp文件
customerformdata.jsp
为了克服所讨论的问题,我们将在控制器中使用@InitBinder注释。@InitBinder用作预处理器,用于修剪字符串前的空白。
Spring MVC @InitBinder
@InitBinder注释用于初始化WebDataBinder,WebDataBinder用于扩展命令并形成带注释的处理程序方法的对象参数。
为了访问@InitBinder注释,我们需要在名为MainController.java 类。
MainController.java