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

Kon*_*ner 4 javabeans vaadin

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

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

  1. 它不会让我觉得非常优雅的代码
  2. 其他调用者现在必须在使用get方法后从中删除标记.

向表中添加单击侦听器也可以

  1. 它可能会打开一个窗口而不是一个标签
  2. 可以通过弹出窗口阻止程序来阻止它

有没有办法控制过程Vaadin将bean属性值转换为表格单元格?

Cha*_*ony 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));  
  }
})
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅documentationjavadoc