SpringMVC的表单验证
使用SpringMVC进行表单验证是一定要引入相关jar包。
第一步:我们首先写出前端的代码(这里是利用springmvc提供的表单元素)
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <form:form action="login" method="post" modelAttribute="monster"> 名字:<form:input path="name"/><form:errors path="name"/><br> 年龄:<form:input path="age"/><form:errors path="age"/><br> <input type="submit" value="添加"> </form:form> </body> </html>
其中 <form:errors path="name"/>是取出错误信息的。由于这里是由request 域中的Monster对象中进行绑定,而Monster 是你进行验证的pojo类。所以,path里面填写的值必须和Monster的属性值保持一致。
第二步:对pojo类进行绑定
package com.bean; import java.util.Date; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.Range; public class Monster { @NotEmpty @Size(max = 1) private String name; private Integer gender; private Integer age; private Date day; private float slary; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getDay() { return day; } public void setDay(Date day) { this.day = day; } public float getSlary() { return slary; } public void setSlary(float slary) { this.slary = slary; } public Monster() { super(); } }
其中 name 上面的@NotEmpty @Size(max = 1)就是你要验证的属性。这里有两中方式。1 . 用i18n国际化 2 不用。不用的话就在每个注解后面加上message。例如:@NotEmpty(message = "名字不能为空")message属性的值就是以后提示的信息。
第三步:后台
ackage com.action; import java.util.Map; import javax.validation.Valid; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.Errors; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import com.bean.Monster; @Controller @Scope(value = "prototype") public class myAction { @RequestMapping(value = "/login") public String login(@Validated Monster monster,BindingResult br) { if(br.hasErrors()) { return "pages/add"; } System.out.println(monster.getName()); return "pages/ok"; } @RequestMapping(value = "/lo") public String lo(Map<String,Object> map) { map.put("monster", new Monster()); return "pages/add"; } }
对目标方法添加@Validated 注解。BindingResult br 是对错误信息的绑定。你的错误信息都会在这里保存。
第四步:配置文件
在你的.xml文件添加<mvc:annotation-driven />这个标签。如果用的i18n的方式,则在添加一下代码
<bean id="messageSource" class= "org.springframework.context.support.ResourceBundleMessageSource"> <!-- 配置国际化文件名字 id必须为messageSource
如果你这样配中的话,表示messageSource回到(i18n文件的路径)src/i18n.properties去读取错误信息 --> <property name="basename" value="i18n"></property> </bean>
如果用的i18n方式,还要取i18n中添加提示信息。规则是:验证类型.表单的modelAttribute的值.属性值=加验证信息。例如:NotEmpty.monster.name=名字不能为空。
完成以上就可以完成验证了。
@NotEmpty @Size(max = 1)

浙公网安备 33010602011771号