我有一个简单的实体
public class Vulnerability{
private String name;
private int probability;
private int damage;
}和使用行编辑器的网格
Grid<Vulnerability> vulnerabilityGrid = new Grid<Vulnerability>(Vulnerability.class);
vulnerabilityGrid.setColumns("name", "probability", "damage");
Grid.Column nameColumn = vulnerabilityGrid.getColumn("name");
Grid.Column probabilityColumn = vulnerabilityGrid.getColumn("damage");
Grid.Column damageColumn = vulnerabilityGrid.getColumn("probability");绑定字段的绑定器代码
Binder<Vulnerability> binderVulnerability = new Binder<Vulnerability>();
TextField nameTextFieldGrid = new TextField(), damageTextFieldGrid = new TextField(), probabilityTextFieldGrid = new TextField();
Binder.Binding<Vulnerability, Integer> probabilityBind = binderVulnerability.forField(probabilityTextFieldGrid).withNullRepresentation("").withConverter(new StringToIntegerConverter(Integer.valueOf(0), "integers only")).bind(Vulnerability::getProbability, Vulnerability::setProbability);
Binder.Binding<Vulnerability, Integer> damageBind = binderVulnerability.forField(damageTextFieldGrid).withNullRepresentation("") .withConverter(new StringToIntegerConverter(Integer.valueOf(0), "integers only")).bind(Vulnerability::getDamage, Vulnerability::setDamage);
nameColumn.setEditorBinding(nameBind);
probabilityColumn.setEditorBinding(probabilityBind);
damageColumn.setEditorBinding(damageBind);列顺序的问题,当我按下行,编辑器被激活时,我得到了probabilityColumn位置上的损坏字段的编辑器,依此类推。


我如何解决这个问题?
发布于 2019-01-26 20:10:50
在这里查看你的代码
Grid.Column probabilityColumn = vulnerabilityGrid.getColumn("damage");
Grid.Column damageColumn = vulnerabilityGrid.getColumn("probability");您将获取"damage“列来引用probabilityColumn,并使用具有getter和setter的绑定来设置它,如下所示。
Binder.Binding<Vulnerability, Integer> probabilityBind = binderVulnerability.forField(probabilityTextFieldGrid).withNullRepresentation("").withConverter(new StringToIntegerConverter(Integer.valueOf(0), "integers only")).bind(Vulnerability::getProbability, Vulnerability::setProbability);
probabilityColumn.setEditorBinding(probabilityBind);对于其他列,你可以做vica,反之亦然。所以它是按照编码方式工作的。如您所见,Vaadin Grid和Binder中的API允许这种不对称,因为可以分别定义getter和setter,在您的情况下这是一个编程错误,但在其他情况下,您可以利用此功能。
https://stackoverflow.com/questions/54377899
复制相似问题