如何在Spring中注册自定义类型转换器?
我需要通过http请求参数传递一个UUID实例。 Spring需要注册自定义类型转换器(来自String)。 我如何注册一个?
请参见弹簧参考手册的第5章: 5.4.2.1。 注册其他自定义PropertyEditors
我有一个带有RequestMapping注释的MVC控制器。 一种方法具有UUID类型的参数。 谢谢工具包,在阅读了WebDataBinder之后 ,我想我需要在我的控制器中使用这样的方法:
@InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(UUID.class, new UUIDEditor()); }
UUIDEditor只是扩展PropertyEditorSupport并覆盖getAsText()和setAsText()。
很好地为我工作。
扩展到前面的例子。
控制器类
@Controller @RequestMapping("/showuuid.html") public class ShowUUIDController { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(UUID.class, new UUIDEditor()); } public String showuuidHandler (@RequestParam("id") UUID id, Model model) { model.addAttribute ("id", id) ; return "showuuid" ; } }
财产de munger
class UUIDEditor extends java.beans.PropertyEditorSupport { @Override public String getAsText () { UUID u = (UUID) getValue () ; return u.toString () ; } @Override public void setAsText (String s) { setValue (UUID.fromString (s)) ; } }
不确定你在问什么?
Spring附带一个CustomEditorConfigurer来提供自定义的String < - > Object转换器。
要使用它,只需将CustomEditorConfigurer作为bean添加到配置中,然后添加自定义转换器。 但是,这些转换器通常在将配置文件中的字符串属性转换为实际对象时使用。
如果您使用的是Spring MVC,那么请查看带注释的MVC部分
具体来说,看一下@RequestParam和@ModelAttribute注释?
希望这可以帮助?