2017-05-18 54 views
2

我有以下問題: 我想訂購一個DomainObject的列,以獲得最重要的信息,即留下。 爲此,我使用了@MemberOrder Annotaion,但這不起作用。我有沒有layout.xml所以沒有選項被覆蓋。Apache ISIS:在一個DomainObject中的列順序 - @MemberOrder不起作用

這裏是我的域對象的一些示例代碼:

@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作品。我的代碼中的錯誤在哪裏?

回答

2

我注意到了幾件事情。

  1. @Property只適用於獲得者,而不是領域。我們確實支持將這個註解添加到字段中,但這也適用於使用Project Lombok的用例(因此Lombok會將註釋「移動」到getter中。因此,即使您的意圖是可能是它是不可編輯的。

  2. 你真的應該使用layout.xml,他們會爲您節省大量的時間,並允許更復雜的佈局。您也可以下載使用「downloadLayoutXml」混入動作一個初始該框架提供。

  3. 對於你的問題:我不太確定爲什麼@MemberOrder沒有被尊重在這裏 - 代碼片段看起來沒問題對我來說。然而,你可能想要做的 - 無論如何哪一個都是非常靈活的工具 - 就是提供一個實現TableColumnOrderService作爲微調訂單的一種方式(甚至可以完全忽略屬性作爲列,即使以交叉方式需要)。

PS:如果你認爲真的是@MemberOrder一個問題,想使用它,請在GitHub上測試應用程序的情況下沿着提出問題。

HTH 丹