Spring格式化程序服务的基础知识

时间:2011-02-17 13:00:51

标签: java spring spring-mvc

真正基本的问题:

如果我使用Springs默认格式化程序,我该如何实际呈现格式化字符串。有人可以帮我完成下面的代码示例,???:

@DateTimeFormat(pattern="yyyy-MMM-dd hh:mmaa");
DateTime myJodaDateTime = ...;

System.out.println( "How do I print myJodaDateTime, formatted: " + ??? );

1 个答案:

答案 0 :(得分:2)

看起来注释配置的格式化程序仅用于对象字段和方法参数。而且,看起来他们忘记提供方便的切入点来手动使用这些功能。所以,你可以这样做:

public class Foo {
    @DateTimeFormat(pattern="yyyy-MMM-dd hh:mmaa")
    DateTime myJodaDateTime = ...; 
}
...
ConversionService cs = ...; // FormattingConversionService with default formatters
System.out.println(
    cs.convert(
        foo.myJodaDateTime, 
        new TypeDescriptor(Foo.class.getDeclaredField("myJodaDateTime")),
        TypeDescriptor.valueOf(String.class)
    )
);

或者,您可以使用

BeanPropertyBindingResult r = new BeanPropertyBindingResult(foo, "foo");
r.initConversion(cs);
System.out.println(r.getFieldValue("myJodaDateTime"));

但它看起来像滥用数据绑定功能。