微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

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

这是我的转换器:

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

}     


解决方法

在 Vaadin 8 中没有 setConverter 方法,它在 Vaadin 7 中。相反,在 Vaadin 8 和更新版本中,您应该使用带有值提供程序的 addColumn 方法版本。请参阅 Vaadin's Forum 中的旧讨论。

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

但是,就您而言,您可能也不需要它。我从你的代码中看到你只是想在网格的单元格中添加删除按钮或类似的东西。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。