2012-03-28 37 views
4

我們有一個BeanItemContainer,我們將其作爲Vaadin表格顯示,效果很好。 唯一的問題是其中一個bean屬性是一個URL,我們希望它成爲一個鏈接。定製Vaadin bean屬性以進行表格單元格轉換

添加「A HREF = ...」的網址在setURL() - 功能的作品,但

  1. 它不打我非常優雅的代碼
  2. 其他主叫方現在必須剝去在使用get方法後,從它獲取標籤。

添加點擊監聽器表的工作很好,但

  1. 它可能會打開一個窗口,而不是一個標籤的
  2. 它可以通過彈出式窗口攔截

是防止有一種方法可以控制進程Vaadin將bean propery值轉換爲表格單元格?

回答

6

在表上使用ColumnGenerator並生成Link組件,例如,

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

+0

謝謝,這正是我需要的東西! – 2012-03-28 11:44:27