当前位置 : 主页 > 编程语言 > c++ >

SpringMVC的数据转换

来源:互联网 收集:自由互联 发布时间:2021-07-03
ch.text SpringMVC的数据转换有三种方式,第一种是通过ConversionService这个接口进行,第二种是通过@initBinder注释来给控制器注入属性,第三种是通过WebBindingInitializer注册全局自定义编辑器进
ch.text
SpringMVC的数据转换有三种方式,第一种是通过ConversionService这个接口进行,第二种是通过@initBinder注释来给
控制器注入属性,第三种是通过WebBindingInitializer注册全局自定义编辑器进行转换。三种方式的实现如下:

此处使用String转换为Date类型

1.通过实现ConversionService接口。
首先开发自定义的转换器,然后注册到ConversionService接口中。
public class StringToDateConverter implements Converter
 
  {
	private String DatePattern;

	public String getDatePattern() {
		return DatePattern;
	}

	public void setDatePattern(String datePattern) {
		DatePattern = datePattern;
	}
	
	public Date convert(String date){
		try{
			SimpleDateFormat dateFormat=new SimpleDateFormat(this.DatePattern);
			return dateFormat.parse(date);
			
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("日期转换失败");
			return null;
		}
	}
}
上述代码中实现了Converter的转换器接口,之后通过SimpleDateFormat这个类的parse将String类型转换为Date类型。
其中需要导入三个包为import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
之后在mvc配置文件中定义conversionService这个类,并将自定义的转换器注册到里面。

  

   
    
     
      
       
       
        yyyy-MM-dd
        
       
      
     
    
  
mvc:annotation-driven这个元素默认配置了控制器需要的适配器、映射器等,更加方便,之后定义了一个ConversionService
来替代默认的,之后通过converters将自定义的转换器注册到其中。

2.通过@initBinder实现
首先编写自定义的转换器。
public class DateEditor extends PropertyEditorSupport{
	@Override
	public void setAsText(String text) throws IllegalArgumentException{
		SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
		try{
			Date date=(Date) dateFormat.parse(text);
			setValue(date);
		}catch (java.text.ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
  }
}
之后通过注解@initBinder为控制器初始化的时候注册属性
@InitBinder
	public void initBinder(WebDataBinder binder){
		binder.registerCustomEditor(Date.class,new DateEditor());
 
网友评论