自定义vaadinbean属性到表单元格的转换

自定义vaadinbean属性到表单元格的转换,vaadin,javabeans,Vaadin,Javabeans,我们有一个BeanItemContainer,我们显示为一个Vaadin表,它工作得非常好。 唯一的问题是bean属性之一是URL,我们希望它是一个链接 将“a href=…”添加到setURL()中的url中-函数起作用,但 我觉得它不是很优雅的代码 在使用get方法之后,其他调用方现在必须从中除去标记 向表中添加单击侦听器也可以,但是 它可能会打开一个窗口而不是一个选项卡 它可能被弹出窗口阻止程序阻止 有没有办法控制Vaadin将bean属性值转换为表格单元格的过程?在表格上使用Column

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

将“a href=…”添加到setURL()中的url中-函数起作用,但

  • 我觉得它不是很优雅的代码
  • 在使用get方法之后,其他调用方现在必须从中除去标记
  • 向表中添加单击侦听器也可以,但是

  • 它可能会打开一个窗口而不是一个选项卡
  • 它可能被弹出窗口阻止程序阻止

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

    在表格上使用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));  
      }
    })
    

    有关更多详细信息,请参见和

    谢谢,这正是我所需要的!