Vaadin表绑定到SQLContainer,如何将字段类型显示为链接

时间:2014-06-21 13:00:33

标签: java vaadin vaadin7

我使用Vaadin's表并使用SQLContainer设置数据:

resultTable.setContainerDataSource(mySQLContainer);
resultTable.setColumnHeader("internalid", "Internal Id");

现在,我想将此字段设为表格列中的链接。 由于我是通过SQLCOntainer直接设置所有字段,因此我不确定如何更改单个字段的外观。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您可以使用TableFieldFactory提供自己的类型映射。

https://vaadin.com/api/com/vaadin/ui/TableFieldFactory.html

只需在表格中指定自己的类,就可以了。

另见:Vaadin 7 : TableFieldFactory

内联类的示例:

    // Set a custom field factory that overrides the default factory
    table.setTableFieldFactory(new DefaultFieldFactory() {
        private static final long serialVersionUID = 8585461394836108250L;

        @Override
        public Field createField(Container container, Object itemId,
                Object propertyId, Component uiContext) {
            // Create fields by their class
            Class<?> cls = container.getType(propertyId);

            // Create a DateField with year resolution for dates
            if (cls.equals(Date.class)) {
                DateField df = new DateField();
                df.setResolution(DateField.RESOLUTION_YEAR);
                return df;
            }

            // Create a CheckBox for Boolean fields
            if (cls.equals(Boolean.class))
                return new CheckBox();

            // Otherwise use the default field factory 
            return super.createField(container, itemId, propertyId,
                                     uiContext);
        }
    });

答案 1 :(得分:0)

将列值显示为此类链接的最佳方法是通过调用ColumnGenerator为该列注册Table.addGeneratedColumn 生成器本身可以访问后备容器属性并返回com.vaadin.ui.Link的实例。对于列ID,您可以使用现有的容器ID来“遮蔽”容器列。