vaadin - 如何在 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"));
我不明白的是错误消息指出为什么我不能添加转换器。错误消息如下:
类型 >Grid.Column<ContactView.Row,capture#1-of ?> 的方法 setConverter(StringToUrlConverter) 未定义
那么我该如何设置我的转换器呢?
这是我的转换器:
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 论坛中的旧讨论。
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;
}
推荐阅读
- java - Kotlin 可比运算符来检查两个对象是否相等
- mysql - 如何修复错误“此 Web 应用程序实例已停止。无法加载 []”
- java - 测试 CloseableIterator 接口
- oracle10g - oracle 回收站中显示“未找到数据”
- android - 如何解决 dlopen failed: library "../../lib/libtbb.so" not found 错误?
- ios - 如何更改具有可变图像名称的按钮的图像?
- css - 不剪辑内容的剪辑路径
- tensorflow - 如果样本大小不能被 Keras 模型中的 batch_size 整除怎么办
- php - 使用 PHP mySQL 显示来自两个 sql 表的数据
- c# - 找不到位图