Проверка значения столбца в таблице vaadin 7

#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. 
  

Я буду каждый раз присваивать это новое имя моему исходному объекту. Итак, как только проверка прошла успешно. Значение поля остается неизменным с тех пор, как мы присвоили ему значение объекта.