真正的基本问题:

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

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

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

最佳答案

看起来像注解配置的格式化程序只打算与对象字段和方法参数一起使用。而且,似乎他们忘记了提供手动使用这些功能的便利入口点。因此,您可以执行以下操作:

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"));


但它似乎滥用了数据绑定功能。

07-26 06:16