Apache Isis如何显示Value Object

时间:2017-08-10 04:45:46

标签: isis

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

现在,我有一个实体对象Customer,我认为Customer可能有很多值对象,例如。 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只是一个Value Object,它不能有任何操作,应由Customer维护。

Customer-CustomerContactInfomation肯定是1-1。

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

1 个答案:

答案 0 :(得分:0)

我不确定我是否将CustomerContactInformation描述为一个值对象...它有一个主键,因此它使其成为一个持久化实体,其手机属性也是可变的。

但是把它放在一边......我认为应该可以获得你之后的效果。您可能已经看过,该框架将Customer#contact属性呈现为CustomerContactInformation对象的超链接。为了允许客户维护其电话属性,我建议对客户采取简单的操作,例如:

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

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

HTH 丹