Spring MVC 的 Converter 和 Formatter
Converter 和 Formatter 都可用於將一種物件型別轉換成另一種物件型別。
Converter 是通用元件,可以將一種型別轉換成另一種型別,可以在應用程式中的任意層中使用;
Formatter 只能將 String 轉換成另一種 Java 型別,是專門為 Web 層設計的;在 Spring MVC 應用程式中,選擇 Formatter 比選擇 Converter 更合適。
Converter
為了建立 Converter, 必須編寫一個實現 org.springframework.core.coverter.converter.Converter 介面的 Java 類
publicinterface Converter<S, T> { // S 表示源型別,T 表示目標型別 public abstract T converter(S source); }
為了使用 Spring MVC 應用程式中定製的 Converter,需要在 Spring MVC 配置檔案中編寫一個 conversionService bean。
Bean 的類名必須為 org.springframework.context.support.ConversionServiceFactoryBean。這個 bean 必須包含一個 converters 屬性,它將列出要在應用中使用的所有定製 Converter。
Formatter
為了建立 Formatter,需要編寫一個實現 org.springframework.format.Format 介面的 Java 類
public interface Formatter<T> extends Printer<t>, Parser<T>{ // T 是輸入的字串要轉換成的目標型別 public abstract T parse(String text, Locale locale); // 利用指定的 Locale 將一個 String 解析成目標型別 public abstract String pring(T object, Locale locale); // 與 parse() 相反,返回目標型別的字串表示法}
為了在 Spring MVC 應用程式中使用 Formatter,需要利用 conversionService bean 對它進行註冊。
bean 的類名稱必須為 org.springframework.format.support.FormattingConversionServicefactoryBean。這個 bean 可以用一個 Formatters 屬性註冊 Formatter,用一個 converters 屬性註冊 converter。
註冊 Formatter 的另一種方法是使用 Registrar。有了 Registrar,就不需要在 Spring MVC 配置檔案中註冊任何 Formatter 了,只在 Spring 配置檔案中註冊 Registrar。