【问题标题】:bean array eclipse scout samplebean array eclipse scout 示例
【发布时间】:2015-03-25 20:37:29
【问题描述】:

我正在学习 Eclipse Scout...我已连接到 Sql 服务器,使用 Object[][] 获取数据...现在,我想使用 bean、beanarray holder 获取数据... 不知道流程...

我已经创建了 bean 用户!
我已经使用服务填充了 bean,使用以下示例:http://www.eclipse.org/forums/index.php/t/310526/

那么有人可以解释一下如何在 scout 中使用 bean、填充表格或表单...

  1. 制作一个 bean 示例:用户
  2. 填充服务中的bean示例:从用户表中获取用户数据
  3. 使用该 bean 填充表...

tnx

【问题讨论】:

    标签: java eclipse eclipse-scout


    【解决方案1】:

    Java POJO (bean)

    如果您正在使用这样的普通旧 Java 对象 (POJO):

    public class User {
        private String firstName;
        private String lastName;
    
        public String getFirstName() {
            return firstName;
        }
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    }
    

    您可以像这样填充这些 POJO 的数组:

    public User[] loadAll() throws ProcessingException {
      BeanArrayHolder<User> beansArray = new BeanArrayHolder<User>(User.class);
    
      SQL.selectInto(" select first_name, last_name " +
          " from users " +
          " into :{FirstName}, :{LastName} ", beansArray);
    
      return beansArray.getBeans();
    }
    

    要填充表格,您需要手动完成。例如在客户端:

    for (User user : beansArray.getBeans()) {
      ITableRow row = getTable().createRow();
      getTable().getNameColumn().setValue(row, user.getLastName());
      getTable().getFirstNameColumn().setValue(row, user.getFirstName());
      getTable().addRow(row, true);
    }
    

    映射服务器端也是可能的。但在这种情况下,您应该明确考虑使用表数据(请参阅下一节)


    表格数据

    您应该确保您使用的是基于 bean 的 TableData。阅读此答案,了解如何区分 table based TableData and bean based TableData

    假设您的表单中有这样的 UserTableField:

    @Order(10.0)
    @FormData(sdkCommand = FormData.SdkCommand.USE, value = AbstractTableFieldBeanData.class, defaultSubtypeSdkCommand = FormData.DefaultSubtypeSdkCommand.CREATE)
    public class UserTableField extends AbstractTableField<UserTableField.Table> {
    
      @Order(10.0)
      public class Table extends AbstractExtensibleTable {
    
        public LastNameColumn getLastNameColumn() {
          return getColumnSet().getColumnByClass(LastNameColumn.class);
        }
    
        public FirstNameColumn getFirstNameColumn() {
          return getColumnSet().getColumnByClass(FirstNameColumn.class);
        }
    
        @Order(10.0)
        public class FirstNameColumn extends AbstractStringColumn {
    
          @Override
          protected String getConfiguredHeaderText() {
            return TEXTS.get("FirstName");
          }
        }
    
        @Order(20.0)
        public class LastNameColumn extends AbstractStringColumn {
    
          @Override
          protected String getConfiguredHeaderText() {
            return TEXTS.get("LastName");
          }
        }
      }
    }
    

    你应该能够在你的服务中做类似的事情:

    UserTableRowData rowData = formData.getUserTable().addRow();
    rowData.setFirstName("John");
    rowData.setLastName("Smith");
    

    如果您想使用 SQL 查询来填充表,而不是手动添加行,您可以执行以下操作:

    BeanArrayHolder<User> beansArray = new BeanArrayHolder<User>(User.class);
    
    SQL.selectInto(" select first_name, last_name " +
          " from users " +
          " into :{UserTable.FirstName}, :{UserTable.LastName} ", formData);
    

    TablePageData 的工作方式相同,请参阅我们教程中的示例:

    MiniCrm Tutorial > Write the first page > Load data on the server

    【讨论】:

    • 你好,我试过了!但没有运气!不知道在哪里调用 bean,我已将 @FormData(sdkCommand = FormData.SdkCommand.USE, value = AbstractTableFieldBeanData.class, defaultSubtypeSdkCommand = FormData.DefaultSubtypeSdkCommand.CREATE) 添加到类 UsersTableData,创建 Bean,用 select 填充它,但没有运气!
    • @FormData(sdkCommand = FormData.SdkCommand.USE, value = AbstractTableFieldBeanData.class, defaultSubtypeSdkCommand = FormData.DefaultSubtypeSdkCommand.CREATE) 行在表字段上,而不是在表数据类上。
    • 我不确定我能如何帮助你,因为我不明白你没有得到什么。欢迎继续讨论,我会尽力而为。
    猜你喜欢
    • 2020-04-28
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2016-06-29
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多