验证vaadin 7网格中的列值

问题描述 投票:1回答:1

我是Vaadin Framework的新手。尝试使用preCommit()grid.getEditorFieldGroup().addCommitHandler()方法验证网格列。当我第一次验证时,验证成功,错误指示以及错误消息显示成功。但是,如果我立即保存,相应的值在达到preCommit()方法时变为null。如何解决这个问题?

我尝试过使用辅助对象。所以我认为这不会影响源对象。但这对我没有帮助。

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) && !machineCode.equals("12345")) {
            editableTextFiled.addValidator(new StringLengthValidator("It must be 6 
                    characters ", 6, 6, false));
        }
    }
}
java vaadin vaadin7 vaadin-grid
1个回答
0
投票

我通过在preCommit()方法的位置从列中输入新值来克服此问题。请参考下面,

TextField nameField = (TextField) grid.getColumn("name").getEditorField();
nameField .getValue(); // new name. 

我每次都会将这个新名称设置为我的源对象。因此,一旦验证成功。由于我们将字段值设置为对象,因此字段值保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.