2017-05-18 2 views
2

Ich habe das folgende Problem: Ich möchte die Spalten eines DomainObject bestellen, um die wichtigsten Informationen zuerst, d. H. Links. Dafür habe ich die @MemberOrder Annotaion verwendet, aber das funktioniert nicht. Ich habe NOlayout.xml so keine Optionen überschrieben werden.Apache ISIS: Spaltenauftrag in einem DomainObject - @MemberOrder funktioniert nicht

Hier einige Beispiel-Code meiner Domain-Objekt:

@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; 
     } 

     ... 
} 

Es Reihenfolge der Spalten zufällig sind, so dass keine @MemberOrder Werke. Wo ist der Fehler in meinem Code?

Antwort

2

Ein paar Dinge, die ich festgestellt habe.

  1. @Property gilt nur für Getter, nicht auf die Felder. Wir unterstützen diese Annotation, die zu Feldern hinzugefügt wird, aber dies ist für den Anwendungsfall, auch Projekt Lombok zu verwenden (wodurch Lombok die Annotation in den Getter "verschiebt"). So wird Ihre Texteigenschaft wahrscheinlich als editierbar angezeigt, obwohl Ihre Absicht war wahrscheinlich für sie nicht editierbar sein.

  2. Sie wirklich sollte Verwendung layout.xml, werden sie Ihnen eine Menge Zeit und lassen viel anspruchsvolle Layouts speichern. Sie können einen ersten einen Download der „downloadLayoutXml“ mixin Aktion mit

  3. Auf Ihre Frage: Ich bin mir nicht wirklich sicher, warum die @MemberOrder hier nicht geehrt wird - das Codefragment sieht okay aus mir. Was Sie aber dennoch tun können - und das ist ohnehin ein sehr flexibles Werkzeug -, ist eine Implementierung von TableColumnOrderService als eine Möglichkeit zur Feinabstimmung der Reihenfolge (oder sogar zum vollständigen Überspringen von Eigenschaften, sogar in einer übergreifenden Art und Weise) muss sein).

PS: wenn Sie denken, es ist wirklich ein Problem mit @MemberOrder ist und es verwenden möchten, heben Sie ein Problem zusammen mit einem Testfall-App auf GitHub.

HTH Dan

Verwandte Themen