我有以下问题: 我想对域对象的列进行排序,以便首先获得最重要的信息,即左边。 因此,我使用了@MemberOrder
注释,但这不起作用。我没有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
工作。我的代码中的错误在哪里?
我注意到的几件事。
-
@Property
仅适用于 getter,不适用于字段。 我们确实支持将此注释添加到字段中,但这也适用于使用龙目岛项目的用例(龙目岛将注释"移动"到 getter。 因此,您的文本属性可能显示为可编辑,即使您的意图可能是不可编辑的。 -
你真的应该使用
layout.xml
,它们将为您节省大量时间并允许更复杂的布局。 您可以使用框架提供的"downloadLayoutXml"mixin操作下载初始版本。 -
对于您的问题:我实际上不确定为什么
@MemberOrder
在这里没有得到尊重 - 代码片段对我来说看起来不错。 但是,您可能想要做的 - 无论如何都是非常灵活的工具 - 是提供TableColumnOrderService
的实现作为微调顺序的一种方式(甚至完全省略属性作为列,如果需要,甚至可以以横切的方式)。
PS:如果您认为@MemberOrder
确实存在问题并想使用它,请在github上提出问题以及测试用例应用程序。
呵呵 担