如何在Vaadin 8中将转换器添加到网格列?

3

我正在使用Vaadin 8,遇到了一个问题。

在我的构造函数中,我创建了一个网格(Grid),并将其添加到一个布局(Layout)中。

Grid<Row> grid = new Grid<>(); grid.removeAllColumns(); //Here, I add columns to the grid grid.addColumn(... grid.addColumn(… …

我希望我能在我的网格中添加一个转换器,具体如下:
 grid.getColumn("delete").setConverter(new StringToUrlConverter("dustbin"));

我不明白的是为什么我无法添加转换器时出现的错误消息。错误消息如下:

方法setConverter(StringToUrlConverter)对于类型 >Grid.Column<ContactView.Row,capture#1-of?>未定义

那么我该如何设置我的转换器?

这是我的转换器:

package com.example.vaadin;

import com.vaadin.data.Converter;
import com.vaadin.data.Result;
import com.vaadin.data.ValueContext;

public class StringToUrlConverter implements Converter<String, String> {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    String imagePath = "";
    
    public StringToUrlConverter(String path) {
        this.imagePath=path;
    }

    public String getImagePath() {
        return imagePath;
    }

    @Override
    public Result<String> convertToModel(String value, ValueContext context) {
         
         return Result.ok(null);
    }

    @Override
    public String convertToPresentation(String value, ValueContext context) {
         
        if(value.equals("delete")) {
            return "<span><img src='img/" + getImagePath() + ".jpg' width='20' height='20'></span>";    
        }
        
        return "";
    }

}     


1个回答

2

Vaadin 8 中没有 setConverter 方法,但在 Vaadin 7 中有。相反,在 Vaadin 8 及更高版本中,您应该使用带有值提供程序的 addColumn 方法版本。请参见Vaadin 论坛中的旧讨论。

StringToUrlConverter converter = new StringToUrlConverter (path);
grid.addColumn(row -> converter.convertToPresentation(row.getDelete(), String.class, ui.getLocale())).setCaption("Delete");

但是在你的情况下,也许你不需要那个。从你的代码中我看到你只是想在Grid的单元格中添加删除按钮或类似的东西。

您可以从Vaadin 8开始使用以下方式在Grid中添加组件:

grid.addComponentColumn(row -> {
    Image image = new Image();
    image.setSrc(path);
    image.addClickListener(event -> {
         // add code to remove the row
         grid.getDataProvider().refreshAll();
    });
    return image;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接