我正在研究Vaadin, 我正在嘗試在網格中打印數據。我想選擇這些數據。以前我想編輯數據,但它似乎在編輯之前。[我看看:https://vaadin.com/docs/-/part/framework/components/components-grid.html#figure.components.grid.editing]爲什麼我沒有良好的行爲,當我選擇與Vaadin網格?
但是,當我有更多的一行,它總是會編輯或選擇我的第一行。
但是,當我嘗試編輯/選擇第二行(只要按一下就可以了),我有: 應是用戶ID:2,第1名:WC,姓:sdsdf,...
我的代碼是:
grid.setItems(getUsersInfo());
grid.addColumn(UserInfo::getUserId).setCaption("User Id");
grid.addColumn(UserInfo::getFirstname).setCaption("First Name")
.setEditorComponent(firstNameEditor, UserInfo::setFirstName);
grid.addColumn(UserInfo::getLastname).setCaption("Last Name")
.setEditorComponent(lastNameEditor, UserInfo::setLastName);
grid.addColumn(UserInfo::getEmail).setCaption("Email")
.setEditorComponent(emailEditor, UserInfo::setEmail);
grid.addColumn(UserInfo::getAddress).setCaption("Address")
.setEditorComponent(addressEditor, UserInfo::setAddress);
grid.addColumn(UserInfo::getPhonenumber).setCaption("Phone Number");
grid.setSizeFull();
grid.setSelectionMode(SelectionMode.SINGLE);
grid.getEditor().setEnabled(true);
setCompositionRoot(grid);
任何幫助將是非常有益的感謝
編輯:我的類的UserInfo是一個用戶對象(getter和setter)典型地:
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
super.setFirstname(firstName);
}
我類_UserInfo是從CayenneDataObject延伸:
public void setFirstname(String firstname) {
writeProperty(FIRSTNAME_PROPERTY, firstname);
}
public String getFirstname() {
return (String)readProperty(FIRSTNAME_PROPERTY);
}
編輯2: 當我剛打印沒有編輯的數據,當我選擇一個數據時,我有同樣的問題,我的代碼是:
final VerticalLayout vlayout = new VerticalLayout();
userInfo = getUsersInfo();
grid.setItems(userInfo);
grid.addColumn(UserInfo::getUserId).setCaption("User Id");
grid.setSizeFull();
vlayout.addComponent(new HeaderMenu());
vlayout.addComponent(grid);
vlayout.setSizeFull();
setCompositionRoot(vlayout);
編輯3:逐步調試步驟後,我發現這裏是問題: 的問題是,我讓我的用戶名:
的錯誤是:
Exception processing async thread queue
Exception processing async thread queue
org.eclipse.jdt.internal.debug.core.model.JDIType cannot be cast to org.eclipse.jdt.debug.core.IJavaReferenceType
在:
public int getUserId() {
return (getObjectId() != null && !getObjectId().isTemporary()) ? (short) getObjectId()
.getIdSnapshot().get(USERID_PK_COLUMN) : null;
}