小编Hen*_*und的帖子

Play Framework 2.0:自定义格式化程序

我正在尝试编写一个自定义格式化程序(对于DateTime字段,而不是java.util.Date字段),但我很难让它工作.我已经创建了我的注释,并扩展了AnnotationFormatter类.我在Application load上调用了play.data.format.Formatters.register(DateTime.class,new MyDateTimeAnnotationFormatter()),但是解析和print方法永远不会触发.

我该怎么做?

编辑:有问题的代码可能会有所帮助;)

注释类(受Play Framework附带的注释类的启发):

@Target({ FIELD })
@Retention(RUNTIME)
@play.data.Form.Display(name = "format.datetime", attributes = { "pattern" })
public static @interface JodaDateTime {
    String pattern();
}
Run Code Online (Sandbox Code Playgroud)

自定义格式化程序类:

public static class AnnotationDateTimeFormatter extends AnnotationFormatter<JodaDateTime, DateTime> {

    @Override
    public DateTime parse(JodaDateTime annotation, String text, Locale locale) throws ParseException {
        if (text == null || text.trim().isEmpty()) {
            return null;
        }

        return DateTimeFormat.forPattern(annotation.pattern()).withLocale(locale).parseDateTime(text);
    }

    @Override
    public String print(JodaDateTime annotation, DateTime value, Locale locale) {
        if (value == null) {
            return null;
        }

        return …
Run Code Online (Sandbox Code Playgroud)

java playframework-2.0

6
推荐指数
1
解决办法
4400
查看次数

标签 统计

java ×1

playframework-2.0 ×1