Apache ISIS: Column Order in a DomainObject - @MemberOrder不起



我有以下问题: 我想对域对象的列进行排序,以便首先获得最重要的信息,即左边。 因此,我使用了@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工作。我的代码中的错误在哪里?

我注意到的几件事。

  1. @Property仅适用于 getter,不适用于字段。 我们确实支持将此注释添加到字段中,但这也适用于使用龙目岛项目的用例(龙目岛将注释"移动"到 getter。 因此,您的文本属性可能显示为可编辑,即使您的意图可能是不可编辑的。

  2. 你真的应该使用layout.xml,它们将为您节省大量时间并允许更复杂的布局。 您可以使用框架提供的"downloadLayoutXml"mixin操作下载初始版本。

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

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

呵呵 担

最新更新