Formatter(格式化)和 Converter(格式化)

功能:

Spring框架的功能,Formatter和Converter均可以将一种对象类型转换成另一种对象类型。


区别:

Converter是通用元件,可以在应用程序的任意层中使用。

Formatter是专门为Web层设计的。

Formatter的原类型必须是String,Converter适用于任意类型。


Converter的使用:

1、实现org.springframework.core.convert.converter.Converter接口

    接口的声明:public interface Converter    (S是原类型,T是目标类型)

    实现T conver (S source)

2、配置springmvc配置文件

    编写一个conversion bean ,类名为:org.springframework.context.support.ConversionServiceFactoryBean

    bean包含一个converters属性,列出要在应用程序中使用的Converter。

3、添加


Converter的实例(将String类型的日期转为Date):
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

public class StringToDateConverter implements Converter {
	private String datePattern;
	
	public StringToDateConverter(String datePattern)
	{
		this.datePattern = datePattern;
		System.out.println("converter with pattern:"+datePattern);
	}

	@Override
	public Date convert(String s) {
		try
		{
			SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
			sdf.setLenient(false);//是否严格解析日期
			return sdf.parse(s);
		}
		catch(java.text.ParseException e)
		{
			throw new IllegalArgumentException(
					"Invalid date format. Please use this pattern\"" + datePattern + "\"");
		}
	}
}

springmvc配置文件:


		
			
				
					
					
				
			
		
Formatter的使用:

1、实现org.springframework.format.Formatter接口

    接口的声明:public interface Formatter    (T是目标类型)

    实现

T parse(String text, java.util.Locale locale)
String print(T object, java.util.Locale locale)

    parse方法利用指定的locale将String解析成目标类型。

    print方法返回目标对象的字符串表示法。

2、配置springmvc配置文件

    编写一个conversionService bean ,类名为:org.springframework.format.support.FormattingConversionServiceFactoryBean

3、添加


Formatter的实例(将String类型的日期转为Date):
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.springframework.format.Formatter;

public class DateFormatter implements Formatter {
	private String datePattern;
	private SimpleDateFormat sdf;
	
	public DateFormatter(String datePattern)
	{
		this.datePattern = datePattern;
		sdf = new SimpleDateFormat(datePattern);
		sdf.setLenient(false);
	}

	@Override
	public String print(Date date, Locale locale) {
		return sdf.format(date);
	}

	@Override
	public Date parse(String s, Locale locale) throws ParseException {
		try
		{
			return sdf.parse(s);
		}
		catch(ParseException e)
		{
			throw new IllegalArgumentException(
					"Invalid date fromat. Please use this pattern\""+datePattern+"\"");
		}
	}
}

springmvc配置文件:

 //配置包扫描器

		
			
				
					
					
				
			
		









你可能感兴趣的:(Spring,Spring,Formatter,Converter)