Настройка свойства bean-компонента Vaadin для преобразования ячейки таблицы - PullRequest
4 голосов
/ 28 марта 2012

У нас есть BeanItemContainer, который мы отображаем как таблица Vaadin, которая работает очень хорошо. Единственная проблема заключается в том, что одним из свойств бина является URL, и мы хотим, чтобы это была ссылка.

Добавление «a href = ...» к URL в setURL () - функция работает, но

  1. это не кажется мне очень элегантным кодом
  2. другие вызывающие абоненты теперь должны удалить теги из него после использования метода get.

Добавление прослушивателя кликов к таблице также работает, но

  1. может открыться окно вместо вкладки
  2. это может быть предотвращено блокировщиком всплывающих окон

Есть ли способ управления процессом, который Ваадин преобразовывает значения свойств бина в ячейки таблицы?

1 Ответ

6 голосов
/ 28 марта 2012

Используйте 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));  
  }
})

См. документацию и javadoc для получения более подробной информации

...