2

我有以下问题:我想对 DomainObject 的列进行排序,以便首先获得最重要的信息,即离开。因此,我使用了@MemberOrderAnnotaion,但这不起作用。我没有 layout.xml,所以没有选项被覆盖。

这是我的域对象的一些示例代码:

 @PersistenceCapable(identityType = IdentityType.DATASTORE, table = "jobs")
 @Extension(vendorName = "datanucleus", key = "datastore", value = "store-email")
 @Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
 @DomainObjectLayout(cssClassFa = "envelope")
 public class EmailSend implements Comparable {

        @PrimaryKey(column = "email_id")
        @Persistent(primaryKey = "true", valueStrategy = IdGeneratorStrategy.IDENTITY, column = "email_id")
        @Property(editing=Editing.DISABLED)
        private int id;

        @Property(editing=Editing.DISABLED)
        @PropertyLayout(multiLine = 5)
        @Column(name = "text", length = 65535)
        @Title(sequence = "1")
        private String text;

        ...

        @MemberOrder(sequence = "1")
        public int getId() {
           return id;
        }

        @MemberOrder(sequence = "2")
        public String getText() {
           return text;
        }

        ...
 }

列的顺序是随机的,所以没有@MemberOrder工作。我的代码中的错误在哪里?

4

1 回答 1

2

我注意到了几件事。

  1. @Property仅适用于吸气剂,不适用于字段。我们确实支持将此注释添加到字段中,但这适用于也使用 Project Lombok 的用例(Lombok 会将注释“移动”到 getter。因此,即使您的意图是,您的 text 属性也可能显示为可编辑可能是因为它是不可编辑的。

  2. 您真的应该使用layout.xml,它们会为您节省大量时间并允许更复杂的布局。您可以使用框架提供的“downloadLayoutXml”混合操作下载初始文件。

  3. 对于您的问题:我实际上不确定为什么@MemberOrder这里没有兑现 - 代码片段对我来说看起来不错。但是,您可能想要做的 - 并且无论如何这是非常灵活的工具 - 是提供一个实现 TableColumnOrderService作为微调顺序的一种方式(或者甚至完全省略属性作为列,即使在需要时以横切方式是)。

PS:如果您认为确实存在问题@MemberOrder并想使用它,请在 github 上与测试用例应用程序一起提出问题。

HTH丹

于 2017-05-19T09:55:18.130 回答