#java #vaadin #vaadin7 #vaadin-grid
#java #vaadin #vaadin7 #vaadin-grid
Вопрос:
Я новичок в Vaadin Framework. Пытаюсь проверить столбец сетки с помощью preCommit()
метода grid.getEditorFieldGroup().addCommitHandler()
. Когда я проверял в первый раз, проверка прошла успешно, и индикация ошибки, а также сообщение об ошибке были успешно показаны. Но опять же, если я сохраню немедленно, соответствующее значение станет нулевым при достижении метода preCommit(). Как решить эту проблему?
Я пробовал использовать вторичный объект. Итак, я подумал, что это не повлияет на исходный объект. Но мне это не помогло.
grid.getEditorFieldGroup().addCommitHandler(new FieldGroup.CommitHandler() {
@Override
public void preCommit(FieldGroup.CommitEvent commitEvent) throws
FieldGroup.CommitException {
BeanItem item = (BeanItem)
commitEvent.getFieldBinder().getItemDataSource();
MyClass qm = (MyClass) item.getBean();
grid.getColumn("myColumn").
setEditorField(generateMachineCode(qm.myColumnValue());
}
private Field << ? > generateMachineCode(String machineCode) {
TextField editableTextFiled = new TextField();
editableTextFiled.setEnabled(true);
if (StringUtils.isNotEmpty(machineCode) amp;amp; !machineCode.equals("12345")) {
editableTextFiled.addValidator(new StringLengthValidator("It must be 6
characters ", 6, 6, false));
}
}
}
Ответ №1:
Я преодолел эту проблему, получив введенное новое значение из столбца вместо метода preCommit(). Пожалуйста, смотрите ниже,
TextField nameField = (TextField) grid.getColumn("name").getEditorField();
nameField .getValue(); // new name.
Я буду каждый раз присваивать это новое имя моему исходному объекту. Итак, как только проверка прошла успешно. Значение поля остается неизменным с тех пор, как мы присвоили ему значение объекта.