将Vaadin bean属性自定义为表格单元格转换

时间:2012-03-28 10:06:24

标签: vaadin javabeans

我们有一个BeanItemContainer,我们显示为一个非常好的Vaadin表。 唯一的问题是其中一个bean属性是一个URL,我们希望它是一个链接。

将“a href = ...”添加到setURL()中的url - 函数可以正常工作,但

  1. 它不会让我觉得非常优雅的代码
  2. 其他调用者现在必须在使用get方法后从中删除标记。
  3. 向表中添加单击侦听器也可以,但

    1. 它可能会打开一个窗口而不是一个标签
    2. 可以通过弹出窗口阻止程序阻止
    3. 有没有办法控制进程Vaadin将bean属性值转换为表格单元格?

1 个答案:

答案 0 :(得分:6)

在表格上使用ColumnGenerator,并生成链接组件,例如

table.addGeneratedColumn("link", new Table.ColumnGenerator() {
  @Override
  public Object generateCell(Table source, Object itemId, Object columnId) {
    Item item = source.getItem(itemId);
    String columnValue = String.valueOf(item.getItemProperty(columnId).getValue());

    String urlValue = columnValue; // Assume columnValue contains full url including protocol, e.g. http://stackoverflow.com
    String urlDescription = columnValue; // Description is the same as the
    return new Link(urlDescription, new ExternalResource(urlValue));  
  }
})

有关详细信息,请参阅documentationjavadoc

相关问题