【问题标题】:Validating the column value in the vaadin 7 grid验证 vaadin 7 网格中的列值
【发布时间】:2019-04-25 06:36:03
【问题描述】:

我是 Vaadin 框架的新手。尝试使用grid.getEditorFieldGroup().addCommitHandler()preCommit() 方法验证网格列。当我第一次验证时,验证成功并且错误指示以及错误消息成功显示。但是,如果我立即保存,则在到达 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) && !machineCode.equals("12345")) {
            editableTextFiled.addValidator(new StringLengthValidator("It must be 6 
                    characters ", 6, 6, false));
        }
    }
}

【问题讨论】:

    标签: java vaadin vaadin7 vaadin-grid


    【解决方案1】:

    我通过从列中获取输入的新值来代替 preCommit() 方法克服了这个问题。请参考下文,

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      相关资源
      最近更新 更多