2

如果属性类型是 java.util.Date,Metawidget 创建日期选择小部件。在我的例子中,POJO 包含 long 类型的时间戳。

public class Node {
    private long created;
    private long lastModified;
    /* ... */
}

Node node = new Node();
VaadinMetawidget metawidget = new VaadinMetawidget();
metawidget.setToInspect(node);

如何配置 Metawidget 以便将特定的长属性呈现为日期选择小部件?

4

1 回答 1

1

您需要挂钩自定义 WidgetBuilder 来执行此操作。您的自定义 WidgetBuilder 只需要担心为“long”创建 Date 小部件,并且可以为其他所有内容返回 null:

您的自定义 WidgetBuilder 需要类似于:

public class MyWidgetBuilder implements WidgetBuilder<Component, VaadinMetawidget> {
    public Component buildWidget( String elementName, Map<String, String> attributes, VaadinMetawidget metawidget ) {
        if ( "long".equals( attributes.get( TYPE ))) {
            return new PopupDateField();
        }
        return null;
    }

}

然后将它包装在 CompositeWidgetBuilder 中,以便 Metawidget '回退'到常规的 VaadinWidgetBuilder 来处理其他所有内容。这是一个例子: http: //metawidget.org/doc/reference/en/html/ch02s04.html#section-architecture-widgetbuilders-implementing-your-own

VaadinMetawidget 已经有一些默认的 WidgetBuilders,所以你可能也想包含这些。以下是默认值:http: //metawidget.org/doc/reference/en/html/ch02s04.html#section-architecture-widgetbuilders-defaults

于 2013-08-11T00:35:56.313 回答