SpringMVC的学习9(@DateTimeFormat、@NotNull、@Length、@Past、@Email)
1、@DateTimeFormat:设置日期格式,springmvc中默认的类型转换器是使用“/”作为分隔,若想要更改类型格式,只需在实体类日期属性上添加@DataTimeFormat("格式")即可
在使用的时候需要注意,若自定义了类型转换器,则设置的日期可视化器就会失效,需要使用FormattingConversionServiceFactoryBean对象才可正常使用
2、在进行数据校验时,可使用@NotNull、@Length、@Past、@Email注解,这是JSR303标准的校验框架,spring是支持的,需要引入pom依赖
<dependency><groupId>org.hibernategroupId><artifactId>hibernate-validatorartifactId><version>5.1.0.Finalversion>dependency>
@NotNull:不能为空
@Length(min=*,max=*):设置长度
@Past:设置日期只能为过去日期
@Email:设置为邮箱格式
使用这些注解,只需要在实体类属性上面添加注解,但是在new该实体类的时候是不会自动使用的,需要在定义实体类前面加上@Valid注解或者使用spring的注解@Validated放在类最上面。
这里是代码部分
导入依赖在上方
实体类Person.java
public class Person {//@NotNull:不允许为空@NotNullprivate Integer id;//限制长度@Length(min = 3,max = 9)private String name;private Integer age;private String gender;//@Past:日期只能填写过去日期@Past@DateTimeFormat(pattern = "yyyy-mm-dd")private Date birth;@Emailprivate String email;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "Person{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", gender='" + gender + '\'' +", birth=" + birth +", email='" + email + '\'' +'}';}
}
Controller请求映射
@Controller
//@Validated
public class ValidationController {/*** @Valid 设置实体类校验**/@RequestMapping("/validation")public String validation(@Valid Person person, BindingResult bindingResult, Model model){System.out.println(person);Map<String,Object> map = new HashMap<String, Object>();if(bindingResult.hasErrors()){/*** bindingResult.getFieldErrors():获取全部报错信息*/List<FieldError> fieldErrors = bindingResult.getFieldErrors();//遍历报错信息集合取出每一个for (FieldError fieldError:fieldErrors) {System.out.println(fieldError.getField());System.out.println(fieldError.getDefaultMessage());map.put(fieldError.getField(),fieldError.getDefaultMessage());}model.addAttribute("errorInfo",map);System.out.println("登录失败");return "forward:/login.jsp";}else{System.out.println("登录成功");return "success";}}}
xml文件配置
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><set><ref bean="myConverter">ref>set>property>bean>
jsp文件
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2022/3/12Time: 10:01To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%request.setAttribute("ctp",request.getContextPath());
%>
<html>
<head><title>Titletitle>
head>
<body><form action="${ctp}/validation" method="post">id: <input name="id" type="text">${errorInfo.id}<br>name: <input name="name" type="text">${errorInfo.name}<br>age: <input name="age" type="text">${errorInfo.age}<br>gender:<input name="gender" type="text">${errorInfo.gender}<br>birth: <input name="birth" type="text">${errorInfo.birth}<br>email: <input name="email" type="text">${errorInfo.email}<br><input type="submit" value="修改">form>
body>
html>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
