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
旦
最近,我使用 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 旦