java不使用提供给表的itemId。addItem()是否类似于Vaadin表UI组件中的列?
只是一个关于瓦丁桌子组件的问题。我使用TableFieldFactory创建了一个表,我注意到,如果我计算一个表(例如8行4列)调用TableFieldFactory的次数,结果是40次(而不是预期的8*4=32)
那么,Vaadin在创建表时是否使用隐藏的额外列?此列是否包含给定给表的itemId。addItem()方法?无论如何,以下是我用于现场工厂的代码:
// UI's static field
public static int counter = 1;
// ... UI's init() method
tbl.setTableFieldFactory(new TableFieldFactory() {
@Override
public Field<?> createField(Container container, Object itemId,
Object propertyId, Component uiContext) {
TextField field = new TextField((String) propertyId);
counter++;
// User can only edit the "Numeric field"
if ("Numeric field".equals(propertyId)) {
field.setData(itemId);
// Remeber the field
valueFields.put((Integer) itemId, field);
// Focus if it is the first editable value
if ((Integer) itemId == 0) {
field.focus();
}
}
else {
field.setReadOnly(true);
}
return field;
}
});
// here counter is 40 for a 8x4 table
# 1 楼答案
我想原因是vaadin表的延迟加载。我体验到,在第一次加载时,表是用一行初始化的(我想是为了更好地响应用户),然后用延迟加载量(在您的情况下是整个表)重新初始化,这将解释额外的8个调用