2017-05-18 8 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は、ゲッターにのみ適用され、フィールドには適用されません。この注釈をフィールドに追加することはサポートしていますが、これはプロジェクトロンボク(Lombokがアノテーションをゲッターに「移動」するための使用例)です。おそらくそれは、非編集可能にするために。

  2. あなたは本当にべき使用layout.xml、彼らははるかに洗練されたレイアウトをあなたの時間のトンを保存し、できるようになります。あなたが「downloadLayoutXml」ミックスインのアクションを使用して初期1をダウンロードすることができます

  3. あなたの質問には:@MemberOrderがここで尊敬されていない理由はわかりません - コードフラグメントは大丈夫です私に。しかし、あなたがやりたいことがあるかもしれない - とにかく柔軟なツールである - は、注文を細かく調整する方法としてTableColumnOrderServiceの実装を提供することです(または、列としてプロパティを完全に省略することもできます。必要があります)。

PS:あなたは本当に@MemberOrderとの問題があると思いますし、それを使用したい場合は、githubの上のテストケースのアプリと一緒に問題を提起してください。

HTH ダン

関連する問題