2012-03-28 7 views
4

Wir haben einen BeanItemContainer, den wir als Vaadin-Tabelle anzeigen, der sehr gut funktioniert. Das einzige Problem ist, dass eine der Bean-Eigenschaften eine URL ist und wir wollen, dass es eine Verbindung ist.Anpassen der Vaadin-Bean-Eigenschaft an die Tabellenzellen-Transformation

"a href = ...", um die URL in der setURL Hinzufügen() - Funktion funktioniert aber

  1. es mich nicht so sehr elegant Code
  2. andere Anrufer nun die schlagen müssen Streifen Tags davon nach der Verwendung der Get-Methode.

einen Klick Zuhörer funktioniert auch auf den Tisch Hinzufügen aber

  1. kann es ein Fenster statt einer Registerkarte öffnen
  2. es durch ein Popup-Blocker verhindert werden kann

Ist gibt es eine Möglichkeit, den Prozess zu steuern Vaadin transformiert Bean-Property-Werte in Tabellenzellen?

Antwort

6

Verwenden Sie einen ColumnGenerator in der Tabelle und generieren Sie eine Link-Komponente, z.

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)); 
    } 
}) 

Siehe documentation und javadoc für mehr Details

+0

Danke, das ist genau das, was ich brauchte! –

Verwandte Themen