Eclipse Scout 遍历表单数据中的字段

Eclipse Scout go through fields in form data

我想遍历表单数据中的所有字段。

我知道在形式上我可以做这样的事情:

 // Go through all fields with IFormFieldVisitor
box.visitFields(new IFormFieldVisitor() {

  @Override
  public boolean visitField(IFormField field, int level, int fieldIndex) {

    if (field instanceof MyClass) {
      ...
    }
    return true;
  }
}, 0);

但是表单数据没有这个选项。如何在表单数据中执行此操作。

您可以使用

获取它们
  1. AbstractFormData.getFields 获取 top-level 字段。如果您还需要嵌套字段,请查看更复杂的 AbstractFormData.getAllFieldsRec().
  2. AbstractFormData.getAllProperties 获取您通过使用 @FormData
  3. 注释 getter 和 setter 定义的属性

这是最简单的情况。

现在,如果您使用 Scout Extension mechanism 向现有表单(及其表单数据)添加新元素,则必须将这些贡献考虑在内。 如果你需要这样做,你可以参考AbstractForm.importFormData的源代码,看看Scout是如何实现的。