我有以下问题:
我想订购DomainObject的列,以便首先获得最重要的信息,即左侧。
因此我使用了@MemberOrder
Annotaion,但这不起作用。我有否 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
有效。我的代码中的错误在哪里?
答案 0 :(得分:2)
我注意到的一些事情。
var mainData;
var contentData;
function objIn(mainAnchor) {
mainData = $('.main li a[data-hover= ' + mainAnchor + ']');
contentData = $('.content-wrap .content[data-hover= ' + mainAnchor + ']');
}
function testObj(dataItem) {
if (dataItem == 'true') {
contentData.addClass('active');
contentData.siblings().addClass('hidden');
mainData.addClass('active');
$(this).addClass('active');
} else if (dataItem == 'false') {
mainData.removeClass('active');
contentData.removeClass('active');
contentData.siblings().removeClass('hidden');
$(this).removeClass('active');
}
}
仅适用于getter,而不适用于字段。我们支持将这个注释添加到字段中,但这也适用于使用Project Lombok的用例(其中Lombok将"移动"注释到getter。所以你的文本属性可能显示为可编辑即使你的意图可能是不可编辑的。
你真的应使用@Property
,它们可以为你节省大量时间,并允许更复杂的布局。您可以使用" downloadLayoutXml"下载初始版本。框架提供的mixin动作。
对于您的问题:我不确定为什么layout.xml
在这里没有被尊重 - 代码片段对我来说没问题。但是,您可能想要做的事情 - 无论如何都是非常灵活的工具 - 是提供TableColumnOrderService
的实现作为一种微调顺序的方法(甚至完全省略属性作为列,即使在十字架中也是如此) - 如果需要,切割时尚)。
PS:如果您认为@MemberOrder
确实存在问题并且想要使用它,请在github上提出问题以及测试用例应用。
HTH 丹