David Parks
David Parks

Reputation: 32071

Basics of Spring formatter service

Really basic question:

If I use Springs default formatters, how do I actually render a formatted string. Can someone help me complete the code example below, what goes in the ???:

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

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

Upvotes: 2

Views: 731

Answers (1)

axtavt
axtavt

Reputation: 242686

It looks like annotation-configured formatters are intended to be used with object fields and method parameters only. Moreover, it looks like they forgot to provide convenient entry point to use these features manually. So, you can do something like this:

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

Alternatively, you can use

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

but it looks as an abuse of databinding functionality.

Upvotes: 2

Related Questions