Apache Isis 如何显示值对象

Apache Isis How to show Value Object

最近,我使用 Apache Isis 构建了我的 DDD 项目。

现在,我有一个实体对象Customer,我想Customer可能有很多值对象,eg。 CustomerContactInfomation.

public class Customer extends AbstractEntityObject{

    @Column(allowsNull = "false")
    @Getter
    private String name;

    @Column(allowsNull = "false")
    @Getter
    private String idcard;

    @Column(allowsNull = "false")
    @Getter
    private CustomerIdType idtype;

    public Customer(String name,String idcard,CustomerIdType idtype) {
        this.name = name;
        this.idcard = idcard;
        this.idtype = idtype;
    }

    @Persistent(mappedBy="customer",dependentElement="false")
    @Column(allowsNull="true")
    @Setter @Getter
    private CustomerContactInfomation contact;

}


public class CustomerContactInfomation {

    @PrimaryKey
    @Column(name = "customerId")
    @Getter
    private Customer customer;

    @Column(allowsNull = "true")
    @Setter @Getter
    private String phone;

}

CustomerContactInfomation只是一个值对象,不能有任何动作,应该由Customer维护。

Customer-CustomerContactInfomation 肯定是 1-1。

现在,我应该如何在 Customer 中显示 CustomerContactInfomation 并能够编辑 CustomerContactInfomation?

我不确定我是否会将 CustomerContactInformation 描述为一个值对象...它有一个主键,因此它是一个持久实体,并且它的 phone 属性 也是可变的.

但抛开这一点...我认为应该可以达到您想要的效果。您可能已经看到,该框架会将 Customer#contact 属性 呈现为指向 CustomerContactInformation 对象的超链接。为了让客户维护其 phone 属性,我建议对客户采取简单的操作,例如:

@MemberOrder(named="contact", sequence="1")
public Customer updateContact(String newPhone) {
   this.contact.setPhone(newPhone);
   return this;
}

@MemberOrder#name 注释将导致此按钮的操作在联系人 属性 下呈现。

HTH 旦