在Vaadin设置属性中动态地将列和行作为超链接

时间:2014-03-07 06:24:32

标签: java vaadin

我是vaadin的新手。我正在使用vaadin表并从数据库表中获取表数据。所以我希望将其中一个列数据作为超链接。

我正在做这样的事情

  table.addContainerProperty("First Name", Component.class,  null);
    table.addContainerProperty("Last Name",  String.class,  null);
    table.addContainerProperty("Year",       Integer.class, null);

我看到了一个示例,我可以将列类型称为超链接。假设我将列类型作为超链接,我如何将超链接属性添加到行值。

如果这些值是静态的,我可以这样做,但它们来自数据库,我只是绑定它们。

任何方向或帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

您可以将生成的列添加到表中,并为每个表行返回一个链接。

示例:

假设表格的数据源中有一个属性“LinkUrl”,其中包含链接的URL。

table.addGeneratedColumn("WebsiteLink", new ColumnGenerator() {

    private static final long serialVersionUID = 1L;

    @Override
    public Object generateCell(Table source, Object itemId, Object columnId) {

        String linkUrl = (String) source.getItem(itemId).getItemProperty("LinkUrl").getValue();
        Link websiteLink = new Link(linkUrl, new ExternalResource(linkUrl));
        websiteLink.setTargetName("_blank");
        return websiteLink;
    }
});

编辑:或者如果要直接向表中添加项目,可以添加类型为Link的容器属性,并为每个Item返回一个链接。