SpringMVC数据格式化

SpringMVC数据格式化:@DateTimeFormat与@NumberFormat的使用

文章目录

  • 一、数据格式化
  • 二、步骤
    • 1.配置xml
    • 2.@DateTimeFormat:将String转换成Date
    • 3.测试
    • 4.@NumberFormat:将String转换为int

一、数据格式化


数据格式化是对数据进行规范化的一种处理方式,它在一定程度上规范了前端传来的数据信息,方便后台对数据进行进一步处理,SpringMVC可以通过注解形式实现数据格式化

二、步骤

1.配置xml

代码如下:

	<!-- 配置数据格式化注解所需要的bean -->
	<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	</bean>

2.@DateTimeFormat:将String转换成Date

实体类(示例):

package com.lanqiao.entity;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;

public class Student {
     

	private int id;
	private String name;
	
	@DateTimeFormat(pattern = "yyyy-MM-dd")//格式化前台传递来的数据。将前台传的数据的格式固定为yyyy-MM-dd
	private Date birthday;
	
	public Student() {
     
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(int id, String name, Date birthday) {
     
		super();
		this.id = id;
		this.name = name;
		this.birthday = birthday;
	}
	public int getId() {
     
		return id;
	}
	public void setId(int id) {
     
		this.id = id;
	}
	public String getName() {
     
		return name;
	}
	public void setName(String name) {
     
		this.name = name;
	}

	public Date getBirthday() {
     
		return birthday;
	}
	public void setBirthday(Date birthday) {
     
		this.birthday = birthday;
	}
}

其中为Date对象添加@DateTimeFormat注解

	@DateTimeFormat(pattern = "yyyy-MM-dd")//格式化前台传递来的数据。将前台传的数据的格式固定为yyyy-MM-dd
	private Date birthday;

3.测试

前端:

	<!-- 测试数据格式化 -->
	<form action="testDateTimeFormat" method="get" >
		编号:<input type="text" name="id"  ><br>
		姓名:<input type="text" name="name"><br
		出生日期:<input type="text" name="birthday"><br>
		<input type="submit" value="修改"/>
	</form>

SpringMVC数据格式化_第1张图片
Controller:

	//测试数据格式化
	@RequestMapping(value = "testDateTimeFormat")
	public String testDateTimeFormat(Student student,BindingResult result) {
     
		
		if(result.getErrorCount()>0) {
     
			for(FieldError error:result.getFieldErrors()) {
     
				System.out.println("error:"+error.getDefaultMessage());
			}
		}
		System.out.println(student.getId()+","+student.getName()+","+student.getBirthday());
		return "success";
	}

效果:
在这里插入图片描述
如果我们没有按照"yyyy-MM-dd"规定格式输入,则会报错
SpringMVC数据格式化_第2张图片

错误信息:

error:Failed to convert property value of type ‘java.lang.String’ to required type ‘java.util.Date’ for property ‘birthday’; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.util.Date] for value ‘2021/04/04’; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2021/04/04]

4.@NumberFormat:将String转换为int

对数字格式化需要添加注解 @NumberFormat

	@NumberFormat(pattern = "#,###")
	private int id;

前端:
SpringMVC数据格式化_第3张图片

控制台:
在这里插入图片描述

可以看出:
@NumberFormat自动将String类型在规则限制下转换为int类型

你可能感兴趣的:(SpringMVC,springmvc,java,后端,xml)