Vaadin - 在新的Vaadin 7.4 Grid中使用FontAwesome渲染Link-Icon

时间:2015-06-22 06:56:23

标签: java vaadin

我在Vaadin 7.4之前使用了一个呈现为FontAwesome-Icon(又名LinkBut​​ton)的链接。使用BeanItemContainer我们通过添加如下生成的列来实现:

        table.addGeneratedColumn(FIELD_SHOW_DETAILS_LINK, new Table.ColumnGenerator() {
            private static final long serialVersionUID = 1L;

            @Override
            public Object generateCell(final Table source, final Object itemId, Object columnId) {
                final Link link = new Link();
                link.setDescription("Show details");
                link.setIcon(FontAwesome.SEARCH);
                link.setResource(new ExternalResource("#!details/" 
                  + ((MainVO) itemId).getUid() + "?mode=VIEW"));
                link.addStyleName("fa");
                return link;
            }
        });

使用CSS样式:

  .fa {
    font-family: FontAwesome;
    color: gray;
    text-decoration: none;
    font-weight: normal;
    padding-left: 5px;
    padding-right: 5px;
  }

我试图"翻译"这对于使用PropertyValueGenerator和addGeneratedProperty方法的新Grid。但是这没有用,布局只显示了Link类的对象表示法。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

您可以在GeneratedPropertyContainer中添加生成的属性,该属性返回String属性(FontAwesome.XXX.getHtml())并将HTML-Renderer添加到网格中的该列。

添加属性

GeneratedPropertyContainer gpc = new GeneratedPropertyContainer(your_collection);
gpc.addGeneratedProperty("download", new PropertyValueGenerator<String>() {
        @Override
        public String getValue(Item item, Object itemId, Object propertyId) {
            return FontAwesome.WARNING.getHtml();
        }

        @Override
        public Class<String> getType() {
            return String.class;
        }
    });

并添加渲染器:

grid.getColumn("download").setRenderer(new HtmlRenderer());