Spring MVC格式化程序和转换器的区别

14
我需要一些关于Spring MVC中格式化器和转换器的区别的澄清。
我理解它们之间的主要区别是,格式化器用于处理将显示给最终用户的数据,例如日期、SSN或信用卡号,而转换器则用于处理隐藏在表单控件背后的数据,例如select选项的值属性。
请问我理解的对吗?可以提供有关这两者之间差异更好的说明和/或示例吗?
2个回答

25

转换器(Converters)用于将一个Java类型转换为另一个Java类型。例如,从Longjava.util.Date,或者从IntegerColor,或者从StringDate。它可以在Web层或任何需要转换服务的层中使用。

格式化程序(Formatters)用于将String转换为另一种Java类型,并反过来。因此,其中一种类型必须是String。例如,不能编写将Long转换为Date的格式化程序。格式化程序的示例包括DateFormatter,用于将String解析为java.util.Date并格式化Date。此外,格式化程序的消息可以本地化。

结论:在Web环境中,如Spring MVC应用程序中,格式化程序非常适合使用。


1

转换器组件用于将一种类型转换为另一种类型,并通过强制将所有此类转换相关代码放置在一个单独的位置中来提供更清晰的分离。

Spring已经支持常用类型的内置转换器,而且该框架也足够可扩展,可以编写自定义转换器。

Spring格式化程序用于根据呈现数据的显示方式对数据进行格式化。例如,根据语言环境格式化日期/时间戳值等。


4
我并不完全知道它们之间的区别。例如,您可以编写将日期转换为字符串的转换器,并且它会像格式化程序一样运行。另外,格式化程序有解析方法,可将字符串转换为日期......那么,如果它们可以互相替代,主要的区别是什么呢? - B.Gen.Jack.O.Neill
1
谢谢Jigar Parekh,不过你并没有真正回答我的问题(顺便说一下,我确实读了你引用的那篇文章)。 - balteo
我喜欢B.Gen.Jack.O.Neill的评论:他提出问题的方式可能比我的原始问题更清晰。有人可以回答他的问题吗? - balteo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接